【问题标题】:How to mock a function call in java如何在java中模拟函数调用
【发布时间】:2021-06-24 16:08:32
【问题描述】:

我是单元测试的新手,并试图找出不同的测试实现。我试图弄清楚如何模拟特定的函数调用。我遇到了 Mock Spy,但不太了解它是如何使用的。有人能告诉我在这种情况下是如何进行模拟的吗...

Class ABC {
   
    void display(String name, int id){
       validateName(name);
       validateId(id);
     }
}


Class TestIt{
   
   @Test
   void testValidation(){

     //how to mock validateName function call and test only validateId ?
     ABC obj=new ABC();
     obj.display("abc",2);
   }
}

【问题讨论】:

  • this 有帮助吗?
  • 你为什么要(部分)删除你正在尝试测试的方法?

标签: java spring-boot unit-testing junit mockito


【解决方案1】:

一些模拟框架允许部分模拟(大部分模拟的类实际上是真实的,只是一些方法被模拟了)。如果您的示例接近真实代码,我不会分别测试这两种方法。如果其中一种方法做了测试中不需要的事情,比如访问外部服务(数据库、Web 服务、文件系统),我会将该功能封装到适配器类中并将其注入ABC。然后你就可以模拟适配器了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 2021-12-17
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多