这是我的课程正在测试:
public class A {
public Integer callMethod(){
return someMethod();
}
private Integer someMethod(){
//Some Code
HttpPost httpPost = new HttpPost(oAuthMessage.URL);
//Some Code
HttpClient httpClient = new DefaultHttpClient();
HttpResponse httpResponse = httpClient.execute(httpPost); ------1
Integer code = httpResponse.getStatusLine().getStatusCode(); ---2
return code;
}
现在我要模拟第1和2行,并返回模拟HttpResponse和代码。
我已经尝试过但是失败了:
@RunWith(PowerMockRunner.class)
@PowerMockIgnore("javax.crypto.*")
public class TestA {
//Spying some things here & Injecting them
@Test
public void testA() {
DefaultHttpClient defaultHttpClientMock = PowerMockito.mock(DefaultHttpClient.class);
HttpResponse httpResponse = PowerMockito.mock(HttpResponse.class, RETURNS_DEEP_STUBS);
HttpClient httpClient = PowerMockito.mock(HttpClient.class);
//HttpResponse httpResponseMock PowerMockito.mock(HttpResponse.class);
HttpPost httpPost = PowerMockito.mock(HttpPost.class);
PowerMockito.whenNew(DefaultHttpClient.class).withNoArguments().thenReturn(defaultHttpClientMock);
PowerMockito.doReturn(httpResponse).when(httpClient).execute(httpPost); //Returns null. It never returns httpResponse.
PowerMockito.when(httpResponse.getStatusLine().getStatusCode()).thenReturn(anyInt());
//call the method
}
PowerMockito.doReturn(httpResponse).when(httpClient).execute(httpPost)
始终返回null。我希望它返回的模拟对象HttpResponse
。我已经阅读了与此错误相关的其他帖子,但不确定该如何处理。有人可以帮忙吗?
代替
PowerMockito.doReturn(httpResponse).when(httpClient).execute(httpPost);
你应该使用
PowerMockito.when(httpResponse.execute(httpPost)).thenReturn(httpResponse);
您的测试中还存在一些问题:模拟构造函数不正确,并且根本不需要httpResponse。
更新 此代码对我而言正常工作:
@RunWith(PowerMockRunner.class)
@PowerMockIgnore("javax.crypto.*")
@PrepareForTest({ HttpPost.class, DefaultHttpClient.class, A.class })
public class TestA {
@Test
public void testA() throws Exception {
HttpPost httpPost = Mockito.mock(HttpPost.class);
PowerMockito.whenNew(HttpPost.class).withArguments(oAuthMessage.URL).thenReturn(httpPost);
DefaultHttpClient defaultHttpClientMock = PowerMockito.mock(DefaultHttpClient.class);
HttpResponse httpResponse = PowerMockito.mock(HttpResponse.class);
PowerMockito.whenNew(DefaultHttpClient.class).withNoArguments().thenReturn(defaultHttpClientMock);
PowerMockito.when(defaultHttpClientMock.execute(httpPost)).thenReturn(httpResponse);
StatusLine statusLine = PowerMockito.mock(StatusLine.class);
PowerMockito.when(httpResponse.getStatusLine()).thenReturn(statusLine);
Integer expected = new Integer(0);
PowerMockito.when(statusLine.getStatusCode()).thenReturn(expected);
A a = new A();
Assert.assertEquals(expected, a.callMethod());
}
}
问题内容: 例如我有一个功能: 我怎样才能返回AJAX后得到的? 问题答案: 因为请求是异步的,所以您无法返回ajax请求的结果(而同步ajax请求是一个 糟糕的 主意)。 最好的选择是将自己的回调传递给f1 然后,您将像这样致电:
我有两个活动和两个布局。当我在第一个活动中显示列表时,一切都正常,并在单击时给出列表中项目的编号,但当我尝试在第二个活动中重复相同的内容时,它会告诉我RecycleServiceClickListener侦听器为空。 适配器: 第一项活动: 第二项活动: 错误: 我不明白为什么在第一种情况下,它正常处理单击,而在第二种情况下,它说RecyclerViewClickListener为null
问题内容: 我在使用Ajax时遇到问题。 问题是,在获得ajax响应之前,它会返回cnt。因此它总是返回NULL。 有没有办法使正确的返回响应值? 谢谢! 问题答案: 由于AJAX请求是异步的,因此您的cnt变量将在请求返回并调用成功处理程序之前返回。 我建议重构您的代码以解决此问题。 一种方法是从AJAX请求的成功处理程序中调用调用了GetGrantAmazonItemCnt()的任何函数,此方
我想在下面返回JSON。 {“名字”:“杰基”} 新来的春靴在这里。1天大。有没有合适的方法可以做到这一点?
加载样式表,并在用户单击按钮时将其应用于场景 调用getScene()返回null。 函数所在的类是场景的控制器和根节点,我使用SceneBuilder 2.0,并将类设置为加载fxml的控制器,它是一个。 问题代码是类中的一个成员函数,标记是这样的,我可以通过设置按钮来调用它。 完整的代码可以在https://github.com/SebastianTroy/FactorioManufactur
问题内容: 我创建了一个自定义错误类型来包装错误,以便更轻松地在Golang中进行调试。当有打印错误时它可以工作,但是现在引起了恐慌。 演示版 当我调用一个函数时,它不会返回错误,我仍然应该能够包装该错误。 预期的行为是,如果错误为nil,则应该简单地忽略它,不幸的是,它会做相反的事情。 我希望它能打印出来。而是即使错误为nil也会打印。 问题答案: 正在将err变量与nil进行比较,但实际上它是