我正在使用Sinon在我的js代码中测试一些单元。
问题是 - 我怎样才能改变模拟对象方法的行为?
例如,我有一些具有reject
方法的对象。我希望他返回一些计算值,并期望它在适当的上下文中调用一次。我做了下面的事情:
var myObj = {reject: function(){
// here original behavior
}};
sinon.stub(myObj, 'reject', function() {
// here my test behavior
});
sinon.mock(myObj).expects('reject').once().on(someContext);
但最终我得到了错误:TypeError: Attempted to wrap reject which is already spied on
我如何解决我的任务?
谢谢!
答案 0 :(得分:1)
看起来你正试图将TWICE方法存根。您可能希望将您的期望添加到第一个存根的结果中:
var myObj = {reject: function(){
// here original behavior
}};
myObjStub = sinon.stub(myObj, 'reject', function() {
// here my test behavior
});
myObjStub.once().on(someContext);
我想如果你想基本上存根自定义行为('这里是我的测试行为',然后确保一旦你这样做就调用它:
var myObj = {reject: function(){
// here CUSTOM behavior
}};
myObjStub = sinon.mock(myObj);
myObjStub.once().on(someContext);