java - Mockito Mock 不返回定义的值

标签 java mockito

我正在为 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/

相关文章:

java - Mockito doAnswer & thenReturn 以一种方法

java - 如何模拟 jdbcTemplate.query(sqlQuery, new Object[] {id, name}, new Mapper())

java - Mockito 当 thenreturn 返回 null 时

java - JFrame 和 JPanel 的背景颜色不同

java - 编程到 'Change color of a circle on click doesn' t 编译

java get属性只存在于子类中

java - Dagger 2 注入(inject)子类

java - 尽管有最大长度,但由于没有最大长度的后视而抛出模式语法异常

java - 为什么我的基于 Mockito 的单元测试无法在 Eclipse 中运行?

java - mockito stub 返回 null