|
@@ -1,21 +1,17 @@
|
|
|
测试替身
|
|
|
---
|
|
|
|
|
|
-Test Double
|
|
|
+测试替身(Test Double)是一个非常有意思的概念。
|
|
|
|
|
|
-当我们遇到一些很难测试的方法、行为的时候,我们就一些特别的方式来帮助我们测试。Mock和Stub就是常见的两种方式:
|
|
|
+> 有时候对被测系统(SUT)进行测试是很困难的,因为它依赖于其他无法在测试环境中使用的组件。这有可能是因为这些组件不可用,它们不会返回测试所需要的结果,或者执行它们会有不良副作用。在其他情况下,我们的测试策略要求对被测系统的内部行为有更多控制或更多可见性。
|
|
|
+> 如果在编写测试时无法使用(或选择不使用)实际的依赖组件(DOC),可以用测试替身来代替。测试替身不需要和真正的依赖组件有完全一样的的行为方式;他只需要提供和真正的组件同样的 API 即可,这样被测系统就会以为它是真正的组件! ——Gerard Meszaros
|
|
|
|
|
|
-**Stub**
|
|
|
+当我们遇到一些难以测试的方法、行为的时候,我们就一些特别的方式来帮助我们测试。Mock和Stub就是常见的两种方式:
|
|
|
|
|
|
- - Stub是一种状态确认
|
|
|
- - Stub用简单的行为来替换复杂的行为
|
|
|
+1. Stub是一种状态确认,它用简单的行为来替换复杂的行为
|
|
|
+2. Mock是一种行为确认,它用于模拟其行为
|
|
|
|
|
|
-**Mock**
|
|
|
-
|
|
|
- - Mock是一种行为确认
|
|
|
- - Mock模拟行为
|
|
|
-
|
|
|
-简单的来说:Stub从某种程度上来说,会返回我们一个特定的结果,用代码替换来方法;而Mock只是确保这个方法被调用。
|
|
|
+通俗地来说:Stub从某种程度上来说,会返回我们一个特定的结果,用代码替换来方法;而Mock只是确保这个方法被调用。
|
|
|
|
|
|
###Stub
|
|
|
|
|
@@ -40,8 +36,3 @@ foo.callMe();
|
|
|
|
|
|
expect( foo.callMe ).toHaveBeenCalled();
|
|
|
```
|
|
|
-
|
|
|
-####Mock Server
|
|
|
-
|
|
|
-Mock是一大类的方法,其中还有一个比较高级的用法是Mock第三方服务。
|
|
|
-
|