sinon 的 stub 可以替换掉目标函数,可以让这些函数包含一些自定义的行为,比如让它们返回特定的值,或者抛出异常 .. 这里的 send 方法使用了 logMessage 方法,我在测试 send 方法的时候,如果你不想真的去执行 logMessage 这个方法,可以使用 sinon 的 stub 替换掉这个方法 ..
写一个测试 .. 描述一下 .. 定义一个变量,名字是 stub .. 使用一下 sinon 的 stub .. 替换掉 demo 里的 logMessage ..
然后可以使用 stub 去模拟一下 logMessage 方法的一些行为,比如我想给这个方法的传递 hello 这个参数值的话 ,让它返回 hello 这个字符串 .. 可以这样写 ..
stub.withArgs('hello').returns('hello')
执行一下 demo 的 send 方法.. 参数的值是 hello .. 再去写一下这个测试的 assertion .. expect(stub.returnValues[0]) .. 这个 stub 的 returnValues 会包含每次调用函数返回的值 .. [0] 表示第一次调用它的时候返回的值 .. 这个值应该等于 hello ..
结束的地方再恢复一下 ..
运行一下.. 测试会通过 ..