PowerMock でテストしているクラスでは、クラスの次のインスタンス化があります
EmailMessage msg = new EmailMessage(getExchangeSession());
EmailMessage
getExchangeSession()
継承された保護されたメソッドである間、私が嘲笑しているサードパーティのツールです。をモックする必要がありますEmailMessage
が、への呼び出しは本当に気にしませんgetExchangeSession()
。
現時点では次のものがありますが、getExchangeSession()
メソッドはまだ呼び出されています:
@RunWith(PowerMockRunner.class)
@PrepareForTest({EmailProvider.class, ExchangeService.class})
public class MyTest {
@Test
public void test() {
EmailMessage emailMessage = createMock(EmailMessage.class);
ExchangeService exchangeService = createMock(ExchangeService.class);
expectNew(EmailMessage.class, exchangeService).andReturn(emailMessage);
// test setup and call to the class under test
Email email = new Email();
new EmailProvider().send(email);
}
}
public class EmailProvider() extends ClassWithProtectedAccess {
public void send(Email email) {
EmailMessage msg = new EmailMessage(getExchangeSession());
// and here follows the code that I am actually testing
// and which works on the msg (EmailMessage)
// ...
}
}
EmailProvider.send() の最初の行は、実行getExchangeSession()
され、その後失敗することです。
どうやら への呼び出しをスキップできないようgetExchangeSession()
で、おそらくこのメソッドもモックする必要があります。これは正しいです?もしそうなら、EasyMock で PowerMock を使用すると、この保護されたメソッドをどのようにモックできますか?