Javascript Chai with should:如何不破坏使用名为;“应该”吗;?
我正在使用柴与应该。效果很好。但是,当我尝试使用具有名为Javascript Chai with should:如何不破坏使用名为;“应该”吗;?,javascript,chai,Javascript,Chai,我正在使用柴与应该。效果很好。但是,当我尝试使用具有名为的属性的对象时,我会遇到麻烦: // object under test function run() { var x = {}; console.log('typeof should:', typeof(x.should)); // 'object' if (x.should == null) { console.log('initializing x.should'); x.sh
的属性的对象时,我会遇到麻烦:
// object under test
function run() {
var x = {};
console.log('typeof should:', typeof(x.should)); // 'object'
if (x.should == null) {
console.log('initializing x.should');
x.should = [];
}
// TypeError: Object #<Assertion> has no method 'push';
x.should.push('foobar')
}
// test code
var chai = require('chai');
chai.should();
run();
//正在测试的对象
函数运行(){
var x={};
log('typeof should:',typeof(x.should));//'object'
if(x.should==null){
log('initialized x.should');
x、 应=[];
}
//TypeError:对象#没有方法“push”;
x、 should.push('foobar'))
}
//测试代码
var chai=需要(“chai”);
chai.should();
run();
当我使用Mocha运行此代码时,条件永远不会为true,因此属性应该永远不会初始化
由于问题出现在包含的库中(确切地说是elastic.js),因此修改测试对象不是一个选项
有什么方法我仍然可以使用柴的should吗?如果(!x.hasOwnProperty(“should”)| x.should==null)
很好的尝试:-)遗憾的是,“生产”代码是我无法控制的库的一部分。我将相应地更新问题。在这种情况下,阻止chai
扩展Object.prototype
(它真的不应该这样做),或者在不同的窗口中运行它(iframe,无论什么),我如何防止这种情况?它发生在这里:-->