0
背景使用Sinon.JS和Rewire時可以設置`this`的值嗎?
如果我有以下模塊:
this_module: {
foo: {};
set_this_foo: function() {
this.foo.boo = 'something';
return this.foo;
}
}
,並使用Rewire導入私有函數,然後單元測試這個功能使用Sinon.js:
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'});
我得到的錯誤消息:
TypeError: Cannot set property 'boo' of undefined
,因爲this
最終具有全局對象的值。我可以通過在運行測試之前定義一個名爲foo
的全局變量來解決此問題,但不希望污染全局名稱空間。
問題
是否有一個(優雅的)的方式的this
相對值來定義到spy()
?
太棒了!非常感謝你。 – rabbitco