Spring、JUnit、およびMockitoを使用してイベントが公開されたことを確認するにはどうすればよいですか?

デイブ

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
ledniov

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]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ