javascript - sinon chai - 期望在全局范围内定义的值
问题描述
我有一个文件,其中包含一个类以及一些全局定义的变量。这是一个简化版本:
let globalVar = 0;
export default class Example {
...
...
run() {
this.key1 = 123;
this.key2 = 345;
this.key3 = 567;
globalVar += 1;
}
}
我想测试这个变量的值以及在类本身上实际设置的一些值。
it('should set values when run() is run', () => {
example.values = {
key1: 123,
key2: 345,
key3: 567,
};
example.run();
expect(example.values.key1).to.eql(123);
expect(example.values.key2).to.eql(345);
expect(example.values.key3).to.eql(567);
expect(globalVar).to.eql(1);
});
值通过this
,但全局变量失败。我还尝试在global
Node 的对象上设置它:
expect(global.globalVar).to.eql(1);
解决方案
节点中的每个文件都有自己的范围,因此globalVar
不能直接从测试文件中访问expect(globalVar).to.eql(1);
解决方法是我们可以创建一个返回的函数,globalVar
例如:
// src.js
let globalVar = 0;
export default class Example {
...
...
run() {
this.key1 = 123;
this.key2 = 345;
this.key3 = 567;
globalVar += 1;
}
getGlobalVar() { // adding a new method here
return globalVar;
}
}
稍后,在测试文件中
expect(example.globalVar()).to.eql(1);
希望能帮助到你
推荐阅读
- angular - 通过cli创建角度应用程序时出错
- javascript - 如何将所有服务器请求重定向到 Firebase 托管中的函数
- java - textRecognizer.isOperational() 返回 false
- c++ - 实现流
可以转换为 Stream其中 U 是 T 的基础 - javascript - 如何检索 Observable
从angularfire2中的引用数组? - reactjs - React:在组件中直接改变状态后调用 setState 的性能损失是什么?
- php - 根据年份对 MySQL 数据进行分组
- c# - 找不到 Windows 控制台应用程序的 App.config 文件
- javascript - JavaScript 按钮单击不起作用
- rest - 完成任务 Alfreso Rest API