当前位置: 首页 > 知识库问答 >
问题:

mockito:Void类型不抛出异常

董高畅
2023-03-14

我是jUnit和mockito的新手。对于虚空的嘲弄是如何发挥作用的,我完全感到困惑。在这里,如果名称是“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);     
   }

}

共有1个答案

葛高澹
2023-03-14

不应该模拟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);

  }
}
 类似资料:
  • 问题内容: 我试图在Netbeans中重构一个大型程序,但我有点迷茫。我从来没有非常模块化,但是现在通过实际学习如何做到这一点来尝试纠正这种情况,并在将来纠正这种情况。不幸的是,我在将某些教程翻译成我的程序时遇到了麻烦。所以我希望这里有人可以帮忙。目前,我正在尝试分解一部分采用特定格式的文件并制成表格的代码。我知道我需要创建一个类并使用它来创建表对象,但是我不确定如何做。我有一个主文件,用于获取文

  • 问题内容: 有人可以解释此代码吗? 看起来似乎很奇怪,但这不会产生强制转换异常,并允许抛出已检查的异常而不必在签名中声明它或将其包装在未检查的异常中。 注意,或者main都没有声明任何检查过的异常,但是输出是: 在Lombok中使用此hack,带有@SneakyThrow批注,该批注允许抛出已检查的异常而无需声明它们。 我知道它与类型擦除有关,但是我不确定要了解hack的每个部分。 编辑: 我知道

  • 问题内容: 我想捕获一个异常,将其记录下来,设置一个标志,然后重新抛出相同的异常 我有这个代码: 但是eclipse在throw ex时抱怨,说“未处理的异常类型Exception”,建议我在它周围添加一个try-catch块。 实际上,我希望调用此方法的进程处理该异常,而不是自己处理……如果一切正常,我只想返回true,如果有异常,则将其记录下来 另一方面,我可以将异常包装在另一个异常中,但是不

  • 问题内容: 我在项目中使用Gson将JSON字符串反序列化为Java对象。如果我提出请求,我希望服务器发出明确定义的响应。服务器将返回我期望的定义明确的响应,或者将返回一个(也定义为)错误对象。 讲清楚一点:假设我有一个简单的对象,像这样: 和这样的错误对象: 如果我收到类似的服务器响应 一切都按预期进行。 但是如果回应是这样的 我会得到一个对象,那里是和是0!Gson文档(来自Json)明确指出

  • 抛出异常的行为是否可能抛出不同的异常? 为了抛出异常,必须(可选地)分配新对象,并调用其构造函数(隐式调用fillinstacktrace)。在某些情况下,听起来像addSupressed也被称为。那么如果没有足够的内存会发生什么呢?JVM是否需要预分配内置异常?例如,(1/0)会抛出OutOfMemoryError而不是ArithmeticException吗? 此外,构造函数是一个方法调用,因

  • 我正在处理一些代码,需要测试函数抛出的异常类型(是TypeError、ReferenceError等吗?)。 我当前的测试框架是AVA,我可以将其作为第二个参数方法进行测试,如下所示: 我开始用笑话重写我的测试,但找不到如何轻松做到这一点。这有可能吗?