用户登录

sinon 模块的 spies 可以跟踪函数的调用,比如调用了几次,每次都使用了什么样的参数。 先添加两个方法,一个是 send .. 接受一个 data 参数 ... 在这个方法里调用一下 this.logMessage .. 把 data 交给这个方法 ..

再定义一下 logMessage 这个方法.. 它也有一个 message 参数 .. 做的事儿就是在控制台上输出这个 message ..

安装一下 sinon ... 保存到项目的开发依赖里 ..

回到我们的测试文件 .. 先导入 sinon ..

然后添加一个测试 .. 描述一下 .. 我要测试的是在执行 send 方法的时候,是不是调用了 logMessage 这个方法,我还要测试调用这个方法的时候使用的那个参数的值 ..

在这个测试里,用一下 sinon 的 spy .. 要跟踪的是 demo 里的 logMessage 这个方法 .. 这样这个 logMessage 方法就会多了一些 sinon 的 spy 提供的属性还有方法 ..

先执行一下 demo 的 send 这个方法 .. 给它一个参数 .. 值是 hello .. 这个方法会调用 logMessage 这个方法 .. 然后把 demo 的 logMessage 输出到控制台上看一下 ..

回到终端,执行一下测试 .. 这里会显示要用 sinon 的 spy 跟踪的 logMessage .. 它上面有很多方法,还有属性 ..

比如 called ,表示是否被调用了 .. 它的值是 true,表示这个方法被调用过 .. notCalled 表示未调用,现在是 false ..

calledOnce 的值是 true,表示它被调用过一次 .. calledTwice 的值是 false ,也就是这个方法没有被调用两次 ..

callCount 的值是一共被调用的次数 .. 现在显示的是 1 .. 表示这个方法被调用过 1 次。

firstCall 这个属性里面的东西是函数第一次被调用的相关的信息 .. 它里面的 args 表示这次调用的时候使用的参数是什么 .. 它是一个数组,数组里的第一个项目就是 hello ...

如果你想得到每次调用的时候都使用了哪些参数,可以找到 args 这个参数 .. 它的值也是一个数组,数组里的项目是每次调用方法的时候使用的参数,每次调用的时候使用的参数都会在各自的数组里 ..

我们可以利用这些属性去创建测试 .. 回到测试 ...

我需要 demo 下面的 logMessage 这个方法被调用过一次 .. 表示调用过一次的属性是 calledOnce ..

我还想让第一次调用的时候使用的参数的值是 hello .. 第一次调用的相关信息在 firstCall 里面,它下面的 args 表示参数 .. 这个参数的值是一个数组 .. 数组里的第一个项目就是第一个参数的值 .. 我需要它的值是 hello ..

结束的地方,再恢复一下 demo 下面的 logMessage .. 使用一下 restore 这个方法 ..

回到终端,运行一下测试 ..

测试会通过 ... 也就是我们断言的 logMessage 会被调用一次 .. 第一次调用它的时候,第一个参数的值是 hello,这些都是真的 ..

Sinon:Spies 跟踪函数的调用《 Node.js:测试 》

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点