回到我们的目标
我们希望能测试 updateUsersTags()
,传入参数 filter
时,会执行到该参数。并成功的将该参数处理後的 tag
加到 user
内。
这边我们命名这个情境为 测试成功使用 filter 参数的回传值()
那麽,我们怎麽在不使用到 removeTag()
函数的状况下,测试出这个情境呢?
首先,我们先宣告一个自己的 stub filterStub
val target = makeTestTags(1)
val filterStub: List<Tag>.() -> List<Tag> = { target }
filterStub()
被呼叫之後,固定只会回传 target
接着,我们设定进行测试状况如下
val (testUser) = makeTestUsers(1)
val (testTag) = makeTestTags(1)
updateUsersTags(
listOf(testUser),
listOf(testTag),
filterStub
)
设定的方式和之前并没有太大差异。
如果顺利呼叫到 filterStub
的话,我们会预期 testUser.tags
里面不会有 testTag
,但是会刚好等於 target
assertThat(testUser.tags.toList(), not(hasItem(testTag)))
assertThat(testUser.tags.toList(), `is`(target))
整体测试看起来是这样
@Test
fun `测试成功使用 filter 参数的回传值`() {
initDatabase()
transaction {
val target = makeTestTags(1)
val filterStub: List<Tag>.() -> List<Tag> = { target }
val (testUser) = makeTestUsers(1)
val (testTag) = makeTestTags(1)
updateUsersTags(
listOf(testUser),
listOf(testTag),
filterStub
)
assertThat(testUser.tags.toList(), not(hasItem(testTag)))
assertThat(testUser.tags.toList(), `is`(target))
}
}
运行测试之後,如果顺利的话,我们会发现案例成功通过,我们针对 updateUsersTags()
的一个单元测试就大功告成罗!
<<: 第 13 天 长痛不如短痛!整理专案|feature module、shared module
看完了前几天制作网页,所需要的素材、使用编辑器及制作网站的流程後後,今天要来介绍HTML、CSS的基...
昨天我们知道v-for的使用方式後那我们就来想一个问题,如果我们遇到渲染不只一组呢? 假设一个h3和...
嗨嗨嗨~大家好!到了我们铁人赛的最後一天了,也意味着我们将要分别了QQ 希望这些内容有让大家可以学习...
DAY19 用 Azure Machine Learning SDK 建立 Datastore 我们...
终於来到今年铁人赛的最後一篇了~虽然都有预先写稿的习惯与准备, 但这次还真的是忙到最後一天才能抽空...