【问题标题】:Mockito: Void type not throwing ExceptionMockito:Void 类型不抛出异常
【发布时间】:2021-06-28 12:19:29
【问题描述】:

我是 jUnit 和 Mockito 的新手。我对 Void 的模拟如何运作感到非常困惑。 这里如果名字是“hello”,函数会抛出异常。 但是当我测试它时,它并没有抛出异常......

Class MyService{

    void validate(MyData data){
        if(data.name.equals("hello"))
            throw new InvalidInput(HttpStatus.BAD_REQUEST,"invalid");

        ResponseEntity<Object> response= // ...RestTemplate call;
        if(response.getStatusCodeValue()!=200) throw Exception....
    }

}

测试

Class MyTesting{

  @Mock
  RestTemplate template;
 
  @BeforeEach
  void setup(){

    //mockitio init..
  }
  

  @Test
  void TestingMyFunc(){
     MyData data = new MyData();

     MyService service=mock(MyService.class);

     data.setName("hello");

     //mocking rest call
     when(template.postForEntity(..).then(..));

     doThrow(new InvalidInput(HttpStatus.BAD_REQUEST,"invalid")).when(service).validate(data);     
   }

}

【问题讨论】:

  • 你的测试单元是什么? service?

标签: java spring-boot junit mockito


【解决方案1】:

如果您在该类中测试方法,则不应模拟 MyService,您应该只模拟 MyService 的依赖项,例如 RestTemplate

Class MyTesting{

 MyService service = new MyService();

 @Mock
 RestTemplate template;

 @BeforeEach
 void setup(){

     //mockitio init..
  }


 @Test
 void TestingMyFunc(){
     MyData data = new MyData();

     data.setName("hello");

     //mocking rest call
     when(template.postForEntity(..).then(..));

     service.validate(data);

  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多