javascript - Sinon js AssertError:预期存根被调用一次,但被调用了 0 次
问题描述
我一直在学习 Sinon JS 进行单元测试,我正在尝试让这个示例代码正常工作。我创建了一个简单的“外部”库:
class MyLib {
simpleMethod () {
return 'some response';
}
static handler() {
const myLib = new MyLib();
myLib.simpleMethod();
}
}
module.exports = MyLib;
然后,我有一个简单的测试套件:
const chai = require('chai');
const sinon = require('sinon');
const MyLib = require('./my-lib');
describe ('sinon example tests', () => {
it ('should call simpleMethod once', () => {
let stubInstance = sinon.stub(MyLib, 'simpleMethod');
MyLib.handler();
sinon.assert.calledOnce(stubInstance);
});
});
但我返回错误“AssertError:预期存根被调用一次但被调用 0 次”。我知道这可能很明显,但为什么simpleMethod
不被调用?
解决方案
simpleMethod 是一个实例方法。要存根实例方法,您应该存根原型。
在你的代码中试试这个。
myStub = sinon.stub(MyLib.prototype, 'simpleMethod');
请记住在测试结束时恢复存根。
myStub.restore();
推荐阅读
- javascript - doc文件或excel文件可以用react js编辑并保存到数据库吗?
- python - 使用 Django 和 MSSQL 检索值时未在复选框中打印值
- java - 使用密钥库在 Java 中签署 SOAP 请求
- css - 使用此代码时如何使导航栏响应?
- c# - 带有 Syncfustion TabItemControl 的棱镜导航
- flutter - 如何在 Arch Linux 上为 Flutter 2 Web 设置 Google Chrome 的环境变量
- javascript - 高级自定义字段、WordPress、Javascript 选项卡式内容
- android - Unity Remote 5 与 Android 问题:CommandInvokationFailure: Unity Remote 要求检查失败
- firebase - Flutter:CocoaPods 找不到 pod“firebase_analytics”的兼容版本:
- python - 使用术语和正则表达式在 Elasticsearch 中搜索和删除数据的问题