AndroID Studio 3.4
我有以下测试方法.基本上,这个测试做的是发出一个请求,它将返回一个LoginResponseEntity,它将被映射并返回一个Single< LoginResponse>
overrIDe fun loginUserPost(username: String, password: String, uniqueIDentifIEr: String, devicetoken: String, APIToken: String) : Single<LoginResponse> { val loginRequestEntity = LoginRequestEntity(username, password, uniqueIDentifIEr, devicetoken) return loginAPIService.loginUserPost(loginRequestEntity, APIToken) .map { loginResponseDomainMapper.map(it) } }
我编写的测试用例有效,但我认为这并没有完全测试这种方法.
@Test fun `should return LoginResponse`() { val loginRequestEntity = LoginRequestEntity("username", "password", "uniqueIDentifIEr", "devicetoken") val loginResponse = LoginResponse("token", createuser(), emptyList(), emptyList()) val loginResponseEntity = LoginResponseEntity("token", createuserEntity(), emptyList(), emptyList()) whenever(loginAPIService.loginUserPost(loginRequestEntity, "APItoken")).thenReturn(Single.just(loginResponseEntity)) loginServiceImp.loginUserPost("username", "password", "uniqueIDentifIEr", "devicetoken", "APItoken") .test() .assertValue(loginResponse) verify(loginAPIService).loginUserPost(loginRequestEntity, "APItoken") } private fun createuser() = User( "ID", "email", "firstname", "lastname", "phone", "address", "dob", "customer", listof("enterpriseIDs"), listof("vendorIDs")) private fun createuserEntity() = UserEntity( "ID", "email", "firstname", "lastname", "phone", "address", "dob", "customer", listof("enterpriseIDs"), listof("vendorIDs")) }
我还能做些什么来测试这种方法.我应该测试.map {loginResponseDomainMapper.map(it)这个方法的一部分吗?
解决方法:
这是一个非常小的方法,不包含很多要测试的东西.两个外部依赖项(loginAPIService和loginResponseDomainMapper)减少了要测试的内容.
所以,
1)loginResponseDomainMapper不是测试方法的一部分,也应该被模拟.
2)你必须明白,这里应该测试什么.
>首先:检查LoginRequestEntity是否已正确构造并传递给loginUserPost方法.这是通过验证(loginAPIService).loginUserPost(loginRequestEntity,“APItoken”)调用来完成的.此外,您可以使用ArgumentCaptor
.
>第二:loginUserPost方法的输出正确传递给loginResponseDomainMapper.map方法.这可以通过之前的额外验证调用来完成.
>第三:正确返回map方法的输出.这是通过assertValue调用完成的.
因此,您只是想验证数据流是否正确,并且在外星人执行期间没有修改任何内容.
3)负面测试.也有很多事情可能出错.如果loginUserPost没有@NotNull注释,则最好处理此函数的null结果.
另外,如果请求不正确怎么办?密码错了,或APItoken已过期?我相信这不会导致悲惨的后果,但你应该对此有所了解.
以上是内存溢出为你收集整理的android – 用于测试rxjava的书面单元测试,但不确定我的单元测试是否测试了所有内容全部内容,希望文章能够帮你解决android – 用于测试rxjava的书面单元测试,但不确定我的单元测试是否测试了所有内容所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)