javascript - 如何在 Chai 中模拟或 stub 'instanceof' |诗农 |摩卡

标签 javascript unit-testing sinon chai sinon-chai

我有一个需要模拟或 stub 数据的情况。

    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

最佳答案

您可以使用Object.create()创建具有给定原型(prototype)的空白(-ish)对象,该原型(prototype)将通过 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

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

关于javascript - 如何在 Chai 中模拟或 stub 'instanceof' |诗农 |摩卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57775086/

相关文章:

python - 以某种方式使用 py.test 时,我可以使用 python 调试器进行调试吗?

javascript - 如何使用 Sinon.js stub 动态对象方法?

javascript - JS 中的牛顿法不准确

用于操作 DOM API 的 Javascript 设计模式

javascript - Parse JS SDK 登录不使用 AngularJs ui 路由保留当前用户信息

sinon - 在第一次调用和第二次调用时为 stub 调用不同的回调

javascript - 如何(sinon) stub 外部模块函数?

javascript - OpenLayers 3 弹出窗口?

visual-studio - 使用 Visual Studio 测试适配器 boost 单元测试 - 设置工作目录

angular - 模拟单元测试的 <ng-template> - Angular 2