我正在尝试使用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);
}
}
答案 0 :(得分:2)
您正在嘲笑错误的方法签名。你有method(JSONObject)
的模拟设置但是正在调用method(JSONObject, JSONObject)
(请注意这两个参数)。您需要模拟双参数方法,或者只在测试中调用单参数方法。
我还建议更改模拟以接受JSONObject
的任何实例:
Mockito.when(testClass.method(any(JSONObject.class)).thenReturn(jsonReturn);
最后,正如Mehmudjan Mehmet所提到的,从测试中删除TestClass
的新实例,否则你的模拟工作就会失败。您应该使用在测试顶部声明的实例。
答案 1 :(得分:1)
你嘲笑了模拟对象的方法,
但在您的测试类中,而不是使用模拟对象testClass
,
你实例化了一个新的TestClass对象,它不会被Mockito拦截。
另外,代码的最后一行看起来不正确,
assertEquals(testClass.method(jsonRequest, jsonReturn));
确定。您的testMethod应该类似于:
@Test
public void testMethod(){
assertEquals(testClass.method(jsonRequest), jsonReturn);
}
希望这有帮助。
答案 2 :(得分:0)
我认为你错了断言
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="content-type-facet" class="facet">
<div class="facet-header">
<h3>Content Type</h3>
</div>
<div>
<span class="facet-percentage" style=""></span>
<span class="facet-title">Chapter</span>
<span class="facet-amount">400</span>
</div>
<div>
<span class="facet-percentage" style=""></span>
<span class="facet-title">Article</span>
<span class="facet-amount">200</span>
</div>
<div>
<span class="facet-percentage" style=""></span>
<span class="facet-title">Reference Work Entry</span>
<span class="facet-amount" id='ciao'>207</span>
</div>
<div>
<span class="facet-percentage" style=""></span>
<span class="facet-title">Protocol</span>
<span class="facet-amount">16</span>
</div>
<div>
<span class="facet-percentage" style=""></span>
<span class="facet-title">Book</span>
<span class="facet-amount">2</span>
</div>
</div>