首页 > 解决方案 > Mocha Sinon 变更构造函数

问题描述

在测试期间,构造函数内部有不应该执行的代码。由于我是诗乃的新手,我认为我可以做到。我为此准备了下面的示例代码。

人.js

class Person {
    constructor() {
        console.log("From constructor");
    }
}

测试库: app.spec.js

const sinon = require('sinon');
const { Person } = require('../Person');

describe('Person', () => {
    it('Test1', () => {
        const costructorSpy = sinon.spy(Person.prototype, 'constructor');
        new Person();
    });
});

但我仍然在终端上看到控制台消息From constructor

标签: node.jsmocha.jssinon

解决方案


如果要替换构造函数行为,请将其替换为存根,而不是间谍。为此使用 sinon 的 createStubInstance() 方法

const sinon = require('sinon');
const { Person } = require('../Person');

describe('Person', () => {
    it('Test1', () => {
        const replacedConstructor = sinon.createStubInstance(Person).returns();
        new Person();
    });
});

这方面的文档写在这里https://sinonjs.org/releases/v9.2.3/stubs/


推荐阅读