我看了文件,但还是不明白。
这两者之间的区别
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
2条答案
按热度按时间e1xvtsh31#
如果你试图调用一个不知道返回什么的mock方法,并且relaxed没有被设置为true,你会抛出一个异常。这样做是为了减少测试引入不可预测行为的可能性,因为开发人员没有故意模拟方法返回的默认值。
在链接的视频中,视图方法可能永远不会被调用,因此不需要“relaxed”。您也可以使用“relaxedUnitFun”,它只适用于返回Unit的方法,例如,对于负责事件日志的类来说很方便。
不过这是一个双刃剑,因为“放松”所有东西会剥夺你上面提到的安全机制。https://mockk.io/#settings-file
mrfwxfqh2#
引用他们的文档:
宽松的模拟是为所有函数返回一些简单值的模拟。这允许您跳过为每个情况指定行为,同时仍然存根您需要的东西。对于引用类型,返回链接的模拟。
来源