1

PullSubscriptionMicrosoft Exchangeで取得したイベントを処理する機能があります。

public void processEvents(ExchangeService service, PullSubscription subscription)
            throws Exception {
    GetEventsResults events = subscription.getEvents();
    // Loop through all item-related events.
    for (ItemEvent itemEvent : events.getItemEvents()) {
        if (itemEvent.getEventType() == EventType.NewMail) {
            EmailMessage message = EmailMessage.bind(service, itemEvent.getItemId());
            EmailParser emailParser = new EmailParser();
            emailParser.parse(message, service);
        }
    }
}

ExchangeService最終クラスであるため、PowerMockitoを使用してテストしようとしています。だから私は嘲笑ExchangeServicePullSubscription、次のようにしました:

ExchangeService serviceMock = PowerMockito.mock(ExchangeService.class);
PullSubscription subscriptionMock = PowerMockito.mock(PullSubscription.class);

@Test
public void startPullNotification() throws Exception {
    ProcessEmails pr = new ProcessEmails("config.properties");
    pr.startPullNotification(serviceMock);
}

次のコードを使用してテストしようとすると、返されるNullPointerExceptionため(つまり、イベントがありません) がスローされます。subscription.getEvents()nullsubscriptionMock

eventResults返される必要があるをモックして、スタブを試みました。

when(subscriptionMock.getEvents()).thenReturn(eventResultsMock);

getEvents()テスト関数で が呼び出されないため、機能しません。この機能をテストする方法を知りたいですか?

http://archive.msdn.microsoft.com/ewsjavaapi

解決:

関数で作成されるすべてのオブジェクトをモックする必要がありました。また、クラス宣言の上に次を追加する必要がありました。

@RunWith(PowerMockRunner.class)
@PrepareForTest({ ClassBeingTested.class })
4

0 に答える 0