如何在柴上嘲笑或存根“ instanceof” Sinon |摩卡咖啡

时间:2019-09-03 15:53:31

标签: javascript unit-testing sinon chai sinon-chai

我有条件需要模拟或存根数据。

    var array =['add','divide']
    var add =listMehtod[0];
    if(add instanceof Calculator){  // how to test this ?
       // some logic
     }

基本上,我必须为内部逻辑编写一些测试用例,但是问题首先是我无法通过的if语句。有什么方法可以通过chai或sinon处理​​它?

测试用例:

  var a = new Calculator();
  expect(a).to.be.instanceOf(Calculator) // this is returning false

1 个答案:

答案 0 :(得分:2)

您可以使用Object.create()用给定的原型创建空白(-ish)对象,该对象将通过instanceof检查:

class Calculator {
    constructor() { this._calculator = 'CALCULATOR' }
    calculate(a, b) { return a + b }
}
const calc = Object.create(Calculator.prototype)
console.log(calc instanceof Calculator) // => true

请注意,此对象仍将继承其原型的属性,即上面的calculate()方法。