我当时正在为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不应在这里覆盖包装器的实例吗?

我还尝试了一个间谍,但效果也不佳。

安装的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/

10-13 03:35