我正在尝试使用sinon存根来测试我的函数,该函数包含两个名为job和job1的变量。如何为它们提供临时值以避免函数值。
在其中一个文件myFunction.js中,我有像
这样的函数function testFunction() {
var job = this.win.get.value1 //test
var job1 = this.win.get.value2 // test1
if(job === 'test' && job1 === 'test1') {
return true;
}
return false;
}
我正在尝试使用karma测试testFunction,并尝试使用我的值存根两个值,以便它可以覆盖函数值
it('should test my function', function(done) {
var stub = sinon.stub('job','job1').values('test','test1');
myFunction.testFunction('test', function(err, decodedPayload) {
decodedPayload.should.equal(true);
done();
});
});
我收到错误“”将作业的未定义属性包装为函数“
答案 0 :(得分:0)
首先,您可以将testFunction简化为以下内容。
it('should test my function', function() {
var sandbox = sinon.sandbox.create();
sandbox.stub(myFunction, 'win').value({
get: {
value1: 'test',
value2: 'test1',
}
});
myFunction.testFunction().should.equal(true);
sandbox.restore();
});
这里没有任何异步,因此在您的测试中,您不需要使用done()。
Sinon' stub'文档建议您应该使用sandbox功能来存根非功能属性。
从你的问题中不清楚你对这个'的背景是什么?是的,所以我假设你的测试已经实例化了你正在测试的名称' myFunction' (你的测试意味着)。
它还不清楚是什么赢得了什么?'和'得到'所以这将假设它们是对象。
不要忘记恢复()沙箱,这样就不会污染后续的测试。
return False