背景
如果我有以下模块:
Pre Change
并使用Rewire导入私有函数,然后使用Sinon.js对此函数进行单元测试:
this_module: {
foo: {};
set_this_foo: function () {
this.foo.boo = 'something';
return this.foo;
}
}
我收到错误消息:
TypeError:无法设置属性' boo'未定义的
因为var set_this_foo = app.__get__('this_module.set_this_foo');
var spy = sinon.spy(set_this_foo);
spy();
expect(spy).to.have.returned({boo: 'something'});
最终拥有全局对象的值。我可以通过在运行测试之前定义名为this
的全局变量来解决此问题,但不希望污染全局命名空间。
问题
是否有(优雅的)方式来定义与foo
相关的this
的值?
答案 0 :(得分:1)
我会这样做有点不同:
spy
由于您也可以使用原始方法名称(仅$(document).ready();
除外)引用间谍,因此调用它将确保在正确的上下文中调用它。