如何在Android中模拟Kotlin对象?

如何在Android中模拟Kotlin对象?,第1张

概述我在kotlin中有一个对象,用于控制当前用户的会话信息.我想模拟具有回调的登录方法.在测试时,我需要在SessionController对象中模拟此方法.objectSessionController{...funsignIn(username:String,password:String,signInCallBack:SignInCallBack){ses

我在kotlin中有一个对象,用于控制当前用户的会话信息.我想模拟具有回调的登录方法.

在测试时,我需要在SessionController对象中模拟此方法.

object SessionController {...    fun signIn(username: String, password: String, signInCallBack: SignInCallBack) {        sessionAPI.attemptSignIn(username,password,object: SignInCallBack{            overrIDe fun onSignInComplete() {                signInCallBack.onSignInComplete()            }            overrIDe fun one rrorOccurred(errorCode: Int, errorMessage: String) {                signInCallBack.onErrorOccurred(errorCode)            }        })    }    ....}

AndroIDTest是这样的:

@RunWith(AndroIDJUnit4::class)class LoginActivityTest {  @Test    fun loginErrorShowing() {        test.tapUsernameFIEld()        test.inputTextinUsernameFIEld("wrongusername")        test.pressUsernameFIEldIMEAction()        test.inputTextinPasswordFIEld("randomPassword")        test.presspasswordFIEldIMEAction()        Espresso.onVIEw(VIEwMatchers.withID(R.ID.errorText)).check(VIEwAssertions.matches(withText("Wrong Password")))    }}

关于如何实现此目标的任何建议/想法?我已经在线阅读了有关将Mockk用于kotlin的信息,但无法模拟该方法并调用适当的回调.任何关于改进结构的建议也将不胜感激.

谢谢

解决方法:

好吧,我认为您应该让SessionController实现一个接口.

object SessionController: ISessionController {    overrIDe fun signIn(username: String, password: String, signInCallBack: SignInCallBack) {       (...)            }}interface ISessionController {    fun fun signIn(username: String, password: String, signInCallBack: SignInCallBack)}

这将为您提供很多解决问题的可能性,例如:

>依赖注入
>测试产品风味
>测试代码中的简单嘲笑()创建

给您一个非常严格的答案有点困难,因为您没有发布任何UT代码;)

编辑

很难在一个帖子中涵盖嘲笑这样的大话题;)
这里有一些很棒的文章:

>依赖注入:https://medium.com/@elye.project/fast-mocked-ui-tests-on-android-kotlin-89ed0a8a351a
>使用不同的风味进行测试:https://android-developers.googleblog.com/2015/12/leveraging-product-flavors-in-android.html

创建单元测试,您始终可以做得简单:

presenter.sth = mockk<ISessionController>()
总结

以上是内存溢出为你收集整理的如何在Android中模拟Kotlin对象?全部内容,希望文章能够帮你解决如何在Android中模拟Kotlin对象?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1080791.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存