これは私のサービスのコードです:私は、単純なユニットテストを書きたいモッキング例外:予期しない例外エラー
public class Service {
public Object serviceMethod() throws MyException {
@Autowired
Dao dao;
try {
return dao.dao_method();
} catch (ExceptionFromDaoMethod e) {
throw (new MyException());
}
}
}
。私は予期しない例外を持っているので、
@Mock
Dao dao;
@InjectMocks
Service service;
@Test(expected=MyException.class)
public void shouldReturnMyException throws MyException {
when(service.serviceMethod()).thenThrow(new MyException());
}
このテストは、失敗します:これは私のテストケースである
ました予想される例外はMyExceptionがあるが、 org.mockito.exception.base.MockitoException
なぜですか?解決策は何ですか?
更新私は本当のクラス対なく嘲笑1対とき条件を使用していたことに注目している@Maciejコワルスキーに 感謝。 ユニットテストのサービスに注釈@Spy
を追加しました。
新しいテストのコードです:
@Mock
Dao dao;
@InjectMocks
@Spy
Service service;
@Before
MockitoAnnotations.initMocks(this);
@Test(expected=MyException.class)
public void shouldReturnMyException throws MyException {
doThrow(new MyException()).when(service.serviceMethod());
}
しかし、今、私はこの問題を持っている:予想される例外はMyExceptionある
しかし
私の解決策が間違っているなぜあなたは私を説明してもらえますか?さらに、あなたのsolutonでは(service.serviceMethod())またはwhen(service).serviceMethod()? – PenguinEngineer
予期しない例外はMyExceptionが予想されますが、 –
PenguinEngineer
MockまたはSpyとしてではないインスタンスをモックしようとしていたので、影響がないか、Mockito例外が発生します。そして、あなたがスパイの方法を嘲笑しているときはそうです.when(service).serviceMethod(); '構文。 –