当前位置: 首页 > 知识库问答 >
问题:

随机试验碰撞TDD Kotlin

李泓
2023-03-14

下面的测试会导致随机崩溃。大多数时候我都不知所措。

> @Test fun `perform login without a previously saved user`() =
> runBlocking {
>     testSavedUser1LiveData = MutableLiveData()
> 
>     coEvery { userDao.getCurrentUserLiveData() } returns testSavedUser1LiveData
>     coEvery { userDao.upsert(any()) } returns Unit
> 
>     coEvery { userAPIDataSource.fetchLoginUser(loginCredentials) } returns Unit
>     coEvery { userAPIDataSource.getLoginUserResults } returns testUser1ResponseLiveDataOfJsonElement
> 
>     loginRepository = LoginRepositoryImpl(userDao, companyDao, userAPIDataSource)
>     loginViewModel = LoginViewModel(dispatchers, validator, loginRepository)
> 
>     loginViewModel.loginLiveData().observeForever(loginLiveDataObserver)
>     loginViewModel.login(loginCredentials)
> 
>     coVerifyOrder {
>         loginLiveDataObserver.onChanged(enableLoading)
>         loginLiveDataObserver.onChanged(loginResults)
>         loginLiveDataObserver.onChanged(disableLoading)
>     } }

附带的代码是fun login(凭据:LoginCredentials){_LoginLivedata.value=LoginResult.Loading(true)

    if(validator.validate(credentials)) {
        triggerLogin(credentials)
    } else {
        _loginLiveData.value = LoginResult.Failure("Incorrect Credentials")
        _loginLiveData.value = LoginResult.Loading(false)
    }
}

private fun triggerLogin(credentials: LoginCredentials) {
    launch(dispatchers.background) {
        loginRepository.performLogin(credentials)

        withContext(dispatchers.ui) {
            _loginLiveData.value = loginRepository.getLoginUserResults
            _loginLiveData.value = LoginResult.Loading(false)
        }
    }
}

Java.lang.AssertionError:验证失败:发生的调用少于订单验证序列所要求的调用。

匹配器:观察者(#94).OnChanged(eq(Loading(value=true))))观察者(#94).OnChanged(eq(Success(User=当前用户响应:1:testUserName1)))观察者(#94).OnChanged(eq(Loading(value=false)))

调用:1)观察者(#94).OnChanged(加载(值=true))2)观察者(#94).OnChanged(成功(用户=当前用户响应:1:testUserName1))

堆栈跟踪:1)
io.mockk.impl.internalplatform.captureStackTrace
(internalplatform.kt:114)
io.mockk.impl.stub.mockkstub.handleInvocation
(mockkstub.kt:256)
io.mockk.impl.instantiation.jvmmockfactoryhelper$mockhandler$1.invocationn.LoginFeatureShould$在没有以前保存的用户$1的情况下执行登录

                                                                     sun.reflect.NativeMethodAccessorImpl.invoke0                          

2)
io.mockk.impl.internalplatform.capturestacktrace
(internalplatform.kt:114)
io.mockk.impl.stub.mockkstub.handleinvocation
(Mockkstub.kt:256)
io.mockk.impl.instantiation.jvmmockfactoryhelper$mockhandler$1.invocation(jvmmockfactoryhelper.kt:25)
io.mockk.proxy.jvm.advice.inter模型$TriggerLogin$1$1.Invoke
(loginviewmodel.kt:-1)
kotlinx.coroutines.intrinsics.undispatchedkt.startundispatchedorreturn(undispatched.kt:91)
kotlinx.coroutines.builderskt__builders_commonkt.withcontext
(builders.common.kt:146)
kotlinx.coroutines.builderskt.withcontext(-:1)

  com.test.testapp.ui.login.LoginViewModel$triggerLogin$1.invokeSuspend

(loginviewmodel.kt:98)
kotlin.coroutines.jvm.internal.baseContinuationimpl.resumewith
(continuationimpl.kt:32)
kotlinx.coroutines.dispatchedtask.run(dispatched.kt:233)
kotlinx.coroutinesscheduler.runsafety
(coroutinescheduler.kt:594)
kotlinx.coroutines.scheduler.access$runsafety

共有1个答案

寿鸣
2023-03-14

在文档或媒体上检查timeout功能,了解高级功能(同样链接在https://mockk.io上)

 类似资料:
  • 我正在制作一个吃豆人风格的游戏,在pygame中使用蟒蛇。目前,我正在创造吃豆人必须在迷宫周围避免的幽灵/怪物。我已经创建了这些,并试图添加随机运动碰撞检测,以便它们在迷宫中移动,而不仅仅是整个屏幕。这些怪物的代码是波纹管。我的问题是,似乎有点跳来跳去,几乎一动不动,我怎么能像吃豆人幽灵一样顺利地穿过迷宫?任何帮助都非常感谢。

  • 我知道已经有一些关于墙壁碰撞的问题了,但是这些答案中的技术都没有帮助我。我正在做一个没有重力的自上而下的探索游戏。运动很好,但是一旦我制造了墙壁和碰撞,它就开始出现故障并传送。我已经包含了(并大大减少了)我认为问题所在的两个功能,在底部我包含了整个代码。 根据pygame精灵墙碰撞的建议,我分割了x和y墙碰撞代码。墙壁碰撞代码基于https://github.com/marcusmoller/py

  • 我一直在学习一些pygame教程,并且基于这些教程开发了自己的代码。具体如下: 所以我想出了如何让我的家伙跳跃,但是我已经在天空中放置了一个块并试图这样做: 试图让角色停止跳跃。有没有一个内置的函数来测试这一点,或者有没有一个适合我的方法。顺便说一下,这是行不通的,我似乎也不知道该怎么做。非常感谢任何帮助:)

  • 你是否看到过车祸?是否跟什么物体相撞过?就像车的相撞一样,刚体对象也可以互相碰撞,当它们互相接触的时候,就认为发生了碰撞。当碰撞发生时,会触发一系列事件,它可以被完全忽略。 碰撞筛选 碰撞筛选允许你启用或者阻止形状之间碰撞的发生,引擎支持使用类型,组位掩码来进行碰撞筛选。 Cocos2d-x 有 32 个支持的碰撞类型,对于每个形状都可以指定其所属的类型。还可以指定有哪些类型可以与这个形状进行碰撞

  • 我正在从Python速成班上攻克太空入侵者游戏。我正在使用Python 3.5和Pygame 1.9。2a0,groupcollide() 在原作中,当子弹与宇宙飞船碰撞时,两个精灵都会从屏幕上移除。 在我的版本中,我希望删除对我来说更随机,以便不是所有的点击都成功。我使用随机模块完成了这项工作,如果随机数低于某个阈值(n),则使碰撞成功。我已经在下面的代码中使用了这个函数,但是它没有按照我想要的

  • 本文向大家介绍javascript实现10个球随机运动、碰撞实例详解,包括了javascript实现10个球随机运动、碰撞实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了javascript实现10个球随机运动、碰撞的方法。分享给大家供大家参考。具体如下: 学了一段时间的javascript了,做过一些小案例,目前最有难度的就是10个小球随机碰撞效果,这不,把它上上来与大家分享一下