我正面臨這個小問題。我有一個服務這樣我怎樣才能嘲笑一個服務拋出一個異常返回一個List的方法?
public class Myservice {
MyRestService myRestService;
public List<String> getNames() throws RestClientException {
return myRestService.getNames();
}
....
和控制器是這樣的:
@RequestMapping(value = URL, method = GET)
public ModelAndView display(final ModelMap model) {
....
try{
List<String> listOfNames = myService.getNames();
}catch(RestClientException e){
LOG.error("Error when invoking Names service", e);
}
model.addAttribute("names", listOfNames);
return new ModelAndView(VIEW, model);
}....
到目前爲止的工作這麼好,爲案件的單元測試的服務實際上 返回字符串作品列表精細。
但由於服務調用另一個基本上是可以拋出異常的休息客戶端,我想嘲笑這種情況。
如果我有我的服務調用myRestClientService
其中myRestClientService
拋出一個異常,應該我的方法簽名「拋出異常」?
final RestClientException myException = mockery.mock(RestClientException.class);
mockery.checking(new Expectations() {
{
oneOf(myService).getNames();
will(returnValue(myException));
...
但我得到一個錯誤,我不能從只返回List的方法拋出異常來解決這個問題嗎?我怎麼測試它?