【问题标题】:Mockito Mock not returning the defined valueMockito Mock 不返回定义的值
【发布时间】:2018-03-12 08:11:34
【问题描述】:

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

【问题讨论】:

    标签: java mockito


    【解决方案1】:

    问题是你在模拟一个单独的对象。

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

    【讨论】:

    • 谢谢!这对我来说真的是一个误解:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    相关资源
    最近更新 更多