如何在 Chai 中模拟或存根 'instanceof' | 诗农 | 摩卡

jsd*_*iya 4 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
     }
Run Code Online (Sandbox Code Playgroud)

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

测试用例 :

  var a = new Calculator();
  expect(a).to.be.instanceOf(Calculator) // this is returning false
Run Code Online (Sandbox Code Playgroud)

mil*_*ose 5

您可以使用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
Run Code Online (Sandbox Code Playgroud)

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