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

如何用不同的参数多次模拟一个方法?

公西宏毅
2023-03-14

我有一些测试方法:

@Test
public void test_method() {
    MyObj mock = mock(MyObj.class);
    when(mock.get("testName", "1")).thenReturn("Result1");
    when(mock.get("test", "2")).thenReturn("rrrr");
}

当我尝试运行此方法时,出现了异常:

org.mockito.exceptions.misusing.PotentialStubbingProblem: 
Strict stubbing argument mismatch. Please check:

Typically, stubbing argument mismatch indicates user mistake when writing tests.
Mockito fails early so that you can debug potential problem easily.
However, there are legit scenarios when this exception generates false negative signal:
  - stubbing the same method multiple times using 'given().will()' or 'when().then()' API
    Please use 'will().given()' or 'doReturn().when()' API for stubbing.
  - stubbed method is intentionally invoked with different arguments by code under test
    Please use default or 'silent' JUnit Rule (equivalent of Strictness.LENIENT).
For more information see javadoc for PotentialStubbingProblem class.

我怎么能嘲弄这种方法呢?

共有1个答案

洪越泽
2023-03-14

错误消息告诉您:

使用“givend().will()”“when().then()”API多次拔除同一方法请使用“will().givend()”“do return().when()”API进行拔除。

 类似资料:
  • 问题内容: 是否可以通过这种方式配置PHPUnit模拟? 我使用PHPUnit 3.5.10,当我要求Matcher时,它会失败,因为它需要“ Logger”参数。就像第二个期望重写了第一个期望一样,但是当我转储模拟时,一切看起来都还不错。 问题答案: 从PHPUnit 3.6开始,根据给定给方法存根的参数,可以使用它来返回不同的值。

  • 当我多次调用同一个函数时,每次都传递了不同的参数,我会这样做: 有没有更方便的方法做到这一点呢?

  • 问题内容: 我要测试的Java类(称为)具有以下功能: (有一种方法可以检查条件并调用A或B)。 如何将每个服务的模拟注入适当的变量? 我的Junit拥有以下功能: 但是,当我运行测试以检查在正确条件下调用的服务A / B时,由于没有注入模拟,我得到了空指针。 显然是由于对同一接口()有多个依赖关系。声明模拟服务时,是否可以指定限定词?还是我需要为依赖项设置setter并设置老式方式? 问题答案:

  • 我要测试的Java类(称为)具有以下内容: (有一个方法,它将检查条件并调用a或B)。 显然,这是因为同一个接口()上存在多个依赖关系。在声明模拟服务时,有没有一种方法可以指定限定符?或者我需要为依赖项设置设置器并设置老式的方式吗?

  • 问题内容: 我想验证以下行为的方法如下。 在我的@Test类中,我希望做这样的事情来验证是否使用“ exception.message”和再次使用“ exception.detail”进行了调用 但是Mockito抱怨​​如下 我如何告诉Mockito检查两个值? 问题答案: 进一步的阅读使我尝试使用ArgumentCaptors和以下作品,尽管比我想要的更为冗长。

  • 我目前正在为一个groovy应用程序编写单元testcase 有人能告诉我这是不是嘲弄斯波克的两个电话的正确方法?如果没有,那么请引导我走向正确的解决方案。