模拟Sinon.js和instanceof中的类

时间:2014-09-25 11:51:27

标签: javascript unit-testing mocking instanceof sinon

我想模拟一些Class的某个对象,但是要抓住这个错误:

function MyClass(){}

var myInstance = new MyClass();
var mock = sinon.mock(myInstance);

console.log(mock instanceof MyClass); // false

如果单元在构造函数中检查完全相同的instanceof,我如何将此模拟传递给测试单元?

我知道,那个存根解决了这个问题,但我确实需要Mock。

谢谢=)

2 个答案:

答案 0 :(得分:0)

如果我没有弄错的话,Sinon模拟包装他们的相关对象,而不是直接采用他们的原型链,这意味着instanceof永远不会按你的意愿工作。

如果您能够更改被测单元,请考虑检查传入对象上是否存在重要属性,而不是其原型链。例如,如果您的单位使用MyClass的{​​{1}}方法,则让单位检查foo而不是typeof o.foo === 'function'

答案 1 :(得分:0)

问题是错误的。

我还需要传递mock对象,然后验证myInstance

,而不是将mock传递给受测试的单元
new SUT(myInstance);
mock.verify();