Mockito Mock没有返回定义的值

时间:2018-03-12 08:11:35

标签: java mockito

我正在为Facebook API包装器编写一些测试代码,但是,Mockito似乎没有按预期工作:

java.lang.AssertionError: expected:<200> but was:<400>

我的测试类有一个由Annotation定义的Mock

    @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不应该在这里覆盖包装器的实例吗?

我也试过一个间谍,也没用。

已安装的Mockito是版本2.15.0中的maven组mockito-core。

1 个答案:

答案 0 :(得分:2)

问题是你在嘲笑一个单独的对象。

@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());
}