我在服务类中有一个方法可以进行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()时会得到一个空对象。因此,之后便抛出了一个空指针。
任何建议都值得赞赏。谢谢。