junit relaxed = true在mockK中有什么作用?

fwzugrvs  于 2022-11-11  发布在  其他
关注(0)|答案(2)|浏览(224)

我看了文件,但还是不明白。
这两者之间的区别

private val myClass: MyClass = mockk(relaxed = true)

还有这个。

private val myClass: MyClass = mockk()

我所理解的是如果relaxed为true。那么,所有的成员字段或方法都将返回默认值。否则,不返回。这理解正确吗?
如果是这样的话,设置always relaxed = true更好。但是在这个视频中,Ryan使用了两者。为什么?
https://youtu.be/60KFJTb_HwU?t=1015

e1xvtsh3

e1xvtsh31#

如果你试图调用一个不知道返回什么的mock方法,并且relaxed没有被设置为true,你会抛出一个异常。这样做是为了减少测试引入不可预测行为的可能性,因为开发人员没有故意模拟方法返回的默认值。
在链接的视频中,视图方法可能永远不会被调用,因此不需要“relaxed”。您也可以使用“relaxedUnitFun”,它只适用于返回Unit的方法,例如,对于负责事件日志的类来说很方便。
不过这是一个双刃剑,因为“放松”所有东西会剥夺你上面提到的安全机制。https://mockk.io/#settings-file

mrfwxfqh

mrfwxfqh2#

引用他们的文档:
宽松的模拟是为所有函数返回一些简单值的模拟。这允许您跳过为每个情况指定行为,同时仍然存根您需要的东西。对于引用类型,返回链接的模拟。
来源

相关问题