gpt4 book ai didi

java - 在 Mockito mock 方法中将 JSONObject 作为参数

转载 作者:行者123 更新时间:2023-11-28 21:04:15 28 4
gpt4 key购买 nike

我正在尝试使用 Mockito 模拟一个用于我的 JUnit 测试的方法。该方法将来自 simple-json 的 JSONObject 作为参数并使用 JSONObject 进行响应。我试图模拟的方法来自另一个类,我正在测试的代码调用它。我似乎无法让 Mockito 捕捉到我的请求并做出相应的回应。我在这里完全遗漏了什么吗?

public class TestClass{
JSONObject jsonRequest;
JSONObject jsonReturn;

AnotherClass anotherClass = Mockito.mock(AnotherClass.class);

@Before
public void setUp(){
jsonRequest = this.readJSONFromFile("jsonRequest.json");
jsonReturn = this.readJSONFromFile("jsonReturn.json");
Mockito.when(anotherClass.anotherClassMethod(jsonRequest)).thenReturn(jsonReturn);
}

@Test
public void testMethod(){
TestClass testClass = new TestClass();
assertEquals(testClass.method(jsonRequest), jsonReturn);
}
}

最佳答案

您正在模拟错误的方法签名。您为 method(JSONObject) 设置了模拟,但正在调用 method(JSONObject, JSONObject)(注意两个参数)。您要么需要模拟双参数方法,要么只在测试中调用单参数方法。

我还建议更改模拟以接受 JSONObject 的任何实例:

Mockito.when(testClass.method(any(JSONObject.class)).thenReturn(jsonReturn);

最后,如 Mehmudjan Mehmet 所述,从您的测试中删除 TestClass 的新实例,否则您的模拟将无法工作。您应该使用在测试顶部声明的实例。

关于java - 在 Mockito mock 方法中将 JSONObject 作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41796776/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com