我正在为 Facebook API 包装器编写一些测试代码,但是,Mockito 似乎没有按预期工作:
java.lang.AssertionError: expected:<200> but was:<400>
我的测试类有一个通过注释定义的模拟
@Mock
private FacebookAPIWrapper facebookAPIWrapper;
在 @Before 中使用 init
MockitoAnnotations.initMocks(this);
测试失败的是:
@Test
public void testSchedulerWithInvalidEntry() {
GenericResponseWrapper genericResponseWrapper = new GenericResponseWrapper(200, null);
Mockito.when(facebookAPIWrapper.createNewPost("invalidToken", "123", "invalid")).thenReturn(genericResponseWrapper);
FacebookAPIWrapper test = new FacebookAPIWrapper();
GenericResponseWrapper testAnswer = test.createNewPost("invalidToken", "123", "invalid");
assertEquals(200, testAnswer.getStatusCode());
}
我的猜测是我对 Mockito 的理解是错误的。 Mockito 不应该在这里覆盖包装器的实例吗?
我也尝试过 spy ,但效果不佳。
安装的Mockito是2.15.0版本的maven组mockito-core。
最佳答案
问题是你正在模拟一个单独的对象。
@Mock
private FacebookAPIWrapper facebookAPIWrapper;
那么您使用的是test
对象而不是模拟的facebookAPIWrapper
,请检查使用模拟的facebookAPIWrapper
对象是否能按预期工作。
@Test
public void testSchedulerWithInvalidEntry() {
GenericResponseWrapper genericResponseWrapper = new GenericResponseWrapper(200, null);
Mockito.when(facebookAPIWrapper.createNewPost("invalidToken", "123", "invalid")).thenReturn(genericResponseWrapper);
GenericResponseWrapper testAnswer = facebookAPIWrapper.createNewPost("invalidToken", "123", "invalid");
assertEquals(200, testAnswer.getStatusCode());
}
关于java - Mockito Mock 不返回定义的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49230677/