javascript - 使用 sinon 在类的实例上存根方法
问题描述
我是新来的 sinon 测试并试图掌握存根的窍门。我正在尝试测试一个接收请求对象的函数,从中获取一些属性,然后将其传递给向外部服务发出获取请求的类的实例。
前任:
exports.getMyThings = (req) => {
const reqOpts = {
qs: req.query
};
return apiInstance.get(req.route, reqOpts);
};
apiInstance
在我导出getMyThings
函数的文件中实例化。
我正在尝试删除该apiInstance.get
方法,以便我可以测试我的getMyThings
函数是否正常工作并将正确的参数传递给它。
我试图通过将类导入我的测试文件来编写存根,然后创建一个存根实例:
const MyClass = require('.../blahblah)
const apiInstance = sinon.createStubInstance(MyClass);
和
const apiInstance = new MyClass();
apiInstance.get = sinon.stub();
但在我的getMyThings
函数内部,该apiInstance.get
方法不是包装的——它是原始的。包装的实例仅存在于我的测试中。这是有道理的,但我不知道如何解决它。任何想法表示赞赏。
解决方案
您可以使用,
const returnMe = () => 'sinon rocks!';
sinon.stub(apiInstance, 'get').callsFake(returnMe);
result = apiInstance.get();
// Do asssertion for result to equal to the returnMe();
希望能帮助到你。
推荐阅读
- python - 如何序列化同一模型的外键
- java - 错误:光标“
“ 不存在 - sql - 5 个字符的字符串 ID,例如 Northwind CustomerID
- intellij-idea - 当我切换 git 分支时,如何在 Intellij Idea 中保存打开的选项卡列表?
- javascript - 使用 setTimeout 在 Javascript 中提取结果时出错
- triggers - 即使我创建了新的潜在客户,触发器仍在运行
- docker - 为什么无法访问docker swarm集群中docker stack部署的应用程序?
- linux - 使用 Ansible CLI / Ad-Hoc 注册变量输出
- c++ - 如何将 boost::multiprecision::cpp_int 转换为&从字节数组
- html - 使用 css 创建形状