sinon存根错误“试图将作业的未定义属性包装为函数”

时间:2018-02-18 11:00:26

标签: unit-testing mocking sinon stub

我正在尝试使用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();
  });
});

我收到错误“”将作业的未定义属性包装为函数“

1 个答案:

答案 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