Spring4.3.8.RELEASEをJUnit4.12とMockito1.10.18で使用しています。イベントを公開するサービスがあります...
@Service("organizationService")
@Transactional
public class OrganizationServiceImpl implements OrganizationService, ApplicationEventPublisherAware
publisher.publishEvent(new ZincOrganizationEvent(id));
@Override
public void setApplicationEventPublisher(ApplicationEventPublisher publisher)
{
this.publisher = publisher;
}
...
@Override
public void save(Organization organization)
{
...
publisher.publishEvent(new ThirdPartyEvent(organization.getId()));
私の質問は、イベントが実際に公開されたことをJUnitテストで確認するにはどうすればよいですか?
@Test
public void testUpdate()
{
m_orgSvc.save(org);
// Want to verify event publishing here
publishEvent
内部でメソッドを呼び出すことを忘れていないかどうかをテストする場合は、OrganizationServiceImpl
次のようなものを使用できます。
class OrganizationServiceImplTest {
private OrganizationServiceImpl organizationService;
private ApplicationEventPublisher eventPublisher;
@Before
public void setUp() {
eventPublisher = mock(ApplicationEventPublisher.class);
organizationService = new OrganizationServiceImpl();
organizationService.setApplicationEventPublisher(eventPublisher)
}
@Test
public void testSave() {
/* ... */
organizationService.save(organization);
verify(eventPublisher).publishEvent(any(ThirdPartyEvent.class));
}
}
上記のテストケースでは、publishEvent
メソッドの呼び出しがあったかどうかを確認します。
詳細については、ドキュメントを確認してください。
について:
私の質問は、イベントが実際に公開されたことをJUnitテストで確認するにはどうすればよいですか?
ApplicationEventPublisher
実際の送信を確認したい場合は、実装をテストする必要があり、おそらくモックなしでテストする必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加