模拟概念是什么?
当涉及到mocking时,您只需要关心三件事:存根,设定期望并进行验证。 一些单元测试方案不涉及其中任何一个,其他仅涉及存根,而其他涉及设置期望和验证。
存根
存根是告诉您的假货与之互动时如何表现的过程。通常,您可以对公共属性(具有getter和/或setter的属性)和公共功能进行存根。
当涉及到存根函数时,通常会有很多选择。您可能希望返回特定的值,抛出错误或调度事件。此外,您可能希望指出函数的行为取决于调用方式的不同(即,通过匹配传递给函数的参数的类型或值)。
如果听起来需要做很多工作,可以,但通常不是。许多模拟框架的一大特点是您不需要对void函数进行存根。您也不必在测试执行过程中对任何未调用的功能或未查询的属性进行存根。
设定期望
伪造品的主要功能之一是能够在测试运行时告诉伪造品您期望的内容。例如,您可能希望特定的函数被正确调用3次。您可能希望它永远不会被调用。您可能希望至少调用两次,但不要超过5次。您可能希望使用特定类型的参数或特定值或以上任意组合来调用它。可能性是无止境。
设定期望是告诉您的假货您预期会发生什么的过程。请记住,由于这是假货,因此实际上没有任何反应。但是,您正在测试的课程绝不明智。从它的角度来看,它调用了该函数并期望它完成了应该执行的操作。
值得一提的是,大多数模拟框架都允许您创建接口或公共类的模拟。您不仅限于仅模拟接口。
验证中
设定期望和验证是齐头并进的。设置期望值是在调用被测类上的函数之前完成的。之后进行验证。因此,首先要设定期望ÿ