java如何对包含匕首注入的简单存储库进行单元测试?
我试图对一个简单的存储库进行单元测试,但它给了我一个NullPointerException
。存储库包含一个依赖于Web服务的方法。Web服务运行良好(我已成功测试)。我正在对webService进行改造,并使用Dagger进行依赖注入。下面是我的代码:
网络服务:
public interface UserWebService {
@GET(USER_ENDPOINT)
Call<UserResponse> getUser();
}
存储库:
public class UserRepository {
@Inject
UserWebService mUserWebService;
public void getUserEmail() throws IOException {
mUserWebService.getUser().execute().body().getUser().getEmail();
}
}
单元测试:
public class UserRepositoryTest {
@Mock
private UserWebService mUserWebService;
@Test
public void getUserEmail() throws IOException {
when(mUserWebService.getUser().execute().body().getUser().getEmail())
.thenReturn("some@email.com");
}
}
另外,抛出NullPointerException
是因为mUserWebService
这是可以理解的,但我如何测试这个单元呢
# 1 楼答案
单元测试通常意味着您测试单个组件,提供friendlies/Mock/Stub来测试某些行为。单元测试中不需要Dagger,所以要回答您的问题,您只需将mock传递给
UserRepository
您可以/应该考虑切换到构造函数注入,因为不需要手动输入库。然后你的测试也会变得更干净