不使用无参数时的Mockito

时间:2019-03-27 21:11:47

标签: java unit-testing spring-boot mocking mockito

我在服务类中有一个方法可以进行Retrofit2调用,而我正在尝试模拟该调用。 当我尝试模拟成功呼叫时,此方法有效,但当我尝试模拟400响应时,则无效。

import static org.junit.Assert.assertEquals;

public class ServiceTests{

    @InjectMocks
    private ServiceClass serviceClass;

    @Mock
    private Call<...> retrofitCallMock;

    @Before
    public void setup(){
        MockitoAnnotations.initMocks(this);
    }

    //This is what i've tried
    @Test
    public void succCallTest(){
        //this works
        when(retrofitCallMock.execute()).thenReturn(Response.success(...));
        //run the method in the service class
        assertEquals("success", serviceClass.methodCall());
    }

    @Test
    public void failCallTest(){
        //this doesn't work
        when(retrofitCallMock.execute()).thenReturn(Response.error(400, ...));
        //run the method in the service class
        assertEquals("fail", serviceClass.methodCall());
    }
}

第二个测试无法正常工作,因为在调用execute()时会得到一个空对象。因此,之后便抛出了一个空指针。

任何建议都值得赞赏。谢谢。

0 个答案:

没有答案