sinon chai - 期望值在全球范围内定义
sinon chai - expect value defined in global scope
我有一个包含 class 以及一些全局定义变量的文件。这是一个简化版本:
let globalVar = 0;
export default class Example {
...
...
run() {
this.key1 = 123;
this.key2 = 345;
this.key3 = 567;
globalVar += 1;
}
}
我想测试这个变量的值以及在 class 本身上实际设置的一些值。
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
对象上设置它:
expect(global.globalVar).to.eql(1);
node 中的每个文件都有自己的范围,因此 globalVar
不能直接从测试文件访问 expect(globalVar).to.eql(1);
解决方法是我们可以创建一个 returns 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);
希望对您有所帮助
我有一个包含 class 以及一些全局定义变量的文件。这是一个简化版本:
let globalVar = 0;
export default class Example {
...
...
run() {
this.key1 = 123;
this.key2 = 345;
this.key3 = 567;
globalVar += 1;
}
}
我想测试这个变量的值以及在 class 本身上实际设置的一些值。
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
对象上设置它:
expect(global.globalVar).to.eql(1);
node 中的每个文件都有自己的范围,因此 globalVar
不能直接从测试文件访问 expect(globalVar).to.eql(1);
解决方法是我们可以创建一个 returns 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);
希望对您有所帮助