提交 7491b94a 编写于 作者: W wizardforcel

2020-06-06 11:05:19

上级 e552a370
......@@ -21,9 +21,9 @@ Mockito 是一个开放源代码框架,可让您轻松创建[测试双打](htt
在模拟中,我们通常使用以下类型的测试双打。
* **Stub** – 是一个对象,该对象对测试期间执行的方法执行具有预定义的返回值。
* **Spy** – 与 Stub 相似的对象,但它们另外记录了它们的执行方式。
* **Mock** – 是在测试期间对方法执行返回值并记录了对这些执行的期望的对象。 如果模拟人收到了他们不期望的电话,并且在验证过程中对其进行了检查,以确保他们收到了所有期望的电话,它们可能会引发异常。
* **存根** – 是一个对象,该对象对测试期间执行的方法执行具有预定义的返回值。
* **间谍** – 与存根相似的对象,但它们另外记录了它们的执行方式。
* **模拟** – 是在测试期间对方法执行返回值并记录了对这些执行的期望的对象。 如果模拟人收到了他们不期望的电话,并且在验证过程中对其进行了检查,以确保他们收到了所有期望的电话,它们可能会引发异常。
我们可以在测试类中模拟接口和类。 Mockito 还可以在使用 Mockito 注解时帮助产生最少的样板代码。
......@@ -79,7 +79,7 @@ testCompile group: 'org.mockito', name: 'mockito-core', version: '2.23.4'
在敲键盘来编写应用和单元测试之前,让我们快速概述有用的 Mockito 注解。
* `@Mock`用于模拟创建。 它使测试类更具可读性。
* `@Spy`用于创建 Spy 实例。 我们可以使用它代替`spy(Object)`方法。
* `@Spy`用于创建间谍实例。 我们可以使用它代替`spy(Object)`方法。
* `@InjectMock`用于自动实例化测试对象,并将所有`@Mock``@Spy`带注解的字段依赖项注入其中(如果适用)。
* `@Captor`用于创建参数捕获器
......
......@@ -40,7 +40,7 @@ public void saveTest()
#### 1.2 `@Spy`
`@Spy`注解用于**创建真实对象并监视该真实对象**Spy 程序可以帮助调用对象的所有常规方法,同时仍可以跟踪每次交互,就像使用模拟一样。
`@Spy`注解用于**创建真实对象并监视该真实对象**间谍程序可以帮助调用对象的所有常规方法,同时仍可以跟踪每次交互,就像使用模拟一样。
请注意,在给定的示例中,由于我们向其中添加了一个键值对,因此映射的大小如何保持为 1。 我们还可以使用它的键取回添加到映射的值。 在模拟实例中是不可能的。
......
......@@ -337,11 +337,11 @@ describe("MathUtils", function() {
```
## 7\. 与茉莉花 Spy 一起工作
## 7\. 与茉莉花间谍一起工作
茉莉具有双重测试功能,称为 Spy。 Spy 可以对任何函数进行 Stub,并跟踪对该函数和所有参数的调用。 Spy 仅存在于定义它的`describe``it`块中,并且在每个规范后都会被删除。 要使用任何方法创建 Spy,请使用`spyOn(object, 'methodName')`调用。
茉莉具有双重测试功能,称为间谍。间谍可以对任何函数进行 Stub,并跟踪对该函数和所有参数的调用。 间谍仅存在于定义它的`describe``it`块中,并且在每个规范后都会被删除。 要使用任何方法创建间谍,请使用`spyOn(object, 'methodName')`调用。
有两个匹配器`toHaveBeenCalled``toHaveBeenCalledWith`应该与 Spy 一起使用。 如果调用了 Spy,则`toHaveBeenCalled`匹配器将返回 true;否则,将返回 true。 如果参数列表与对 Spy 的任何记录调用匹配,则`toHaveBeenCalledWith`匹配器将返回 true。
有两个匹配器`toHaveBeenCalled``toHaveBeenCalledWith`应该与间谍一起使用。 如果调用了间谍,则`toHaveBeenCalled`匹配器将返回 true;否则,将返回 true。 如果参数列表与对间谍的任何记录调用匹配,则`toHaveBeenCalledWith`匹配器将返回 true。
```java
describe("MathUtils", function() {
......@@ -369,9 +369,9 @@ describe("MathUtils", function() {
```
上面的示例本质上是最基本的,您也可以使用 Spy 来验证对内部方法的调用。 例如。 如果在任何对象上调用方法`calculateInterest()`,则可能需要检查是否必须在该对象内调用`getPrincipal()``getROI()``getTime()`。 Spy 将帮助您验证这些假设。
上面的示例本质上是最基本的,您也可以使用间谍来验证对内部方法的调用。 例如。 如果在任何对象上调用方法`calculateInterest()`,则可能需要检查是否必须在该对象内调用`getPrincipal()``getROI()``getTime()`。 间谍将帮助您验证这些假设。
当没有要监视的功能时,`jasmine.createSpy`可以创建裸露的 Spy。 该 Spy 的行为与其他任何 Spy 一样-跟踪调用,参数等。但是它背后没有实现。 Spy 是 JavaScript 对象,可以这样使用。 通常,这些 Spy 在需要时用作其他函数的回调函数。
当没有要监视的功能时,`jasmine.createSpy`可以创建裸露的间谍。 该间谍的行为与其他任何间谍一样-跟踪调用,参数等。但是它背后没有实现。 间谍是 JavaScript 对象,可以这样使用。 通常,这些间谍在需要时用作其他函数的回调函数。
```java
var callback = jasmine.createSpy('callback');
......@@ -392,17 +392,17 @@ tape.play();
```
`calls`属性上跟踪并公开了对 Spy 的每次调用。 让我们看看如何使用这些属性来跟踪 Spy
`calls`属性上跟踪并公开了对间谍的每次调用。 让我们看看如何使用这些属性来跟踪间谍
| 追踪属性 | Purpose |
| .calls.any() | 如果根本没有调用过该 Spy,则返回 false;如果至少发生一次调用,则返回 true。 |
| .calls.count() | 返回 Spy 被调用的次数 |
| .calls.any() | 如果根本没有调用过该间谍,则返回 false;如果至少发生一次调用,则返回 true。 |
| .calls.count() | 返回间谍被调用的次数 |
| .calls.argsFor(index) | 返回传递给电话号码索引的参数 |
| .calls.allArgs() | 返回所有调用的参数 |
| .calls.all() | 返回上下文(`this`),并且参数传递了所有调用 |
| .calls.mostRecent() | 返回上下文(`this`)和最近一次调用的参数 |
| .calls.first() | 返回第一次调用的上下文(`this`)和参数 |
| .calls.reset() | 清除所有跟踪以发现 Spy |
| .calls.reset() | 清除所有跟踪以发现间谍 |
## 8\. 茉莉花教程–最终想法
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册