PullSubscription
Microsoft 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を使用してテストしようとしています。だから私は嘲笑ExchangeService
しPullSubscription
、次のようにしました:
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()
null
subscriptionMock
eventResults
返される必要があるをモックして、スタブを試みました。
when(subscriptionMock.getEvents()).thenReturn(eventResultsMock);
getEvents()
テスト関数で が呼び出されないため、機能しません。この機能をテストする方法を知りたいですか?
http://archive.msdn.microsoft.com/ewsjavaapi
解決:
関数で作成されるすべてのオブジェクトをモックする必要がありました。また、クラス宣言の上に次を追加する必要がありました。
@RunWith(PowerMockRunner.class)
@PrepareForTest({ ClassBeingTested.class })