Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

During test There is code that should not be executed inside the constructor function. Since I was new to Sinon, I thought I could do with it. I prepared the sample code below for this.

Person.js

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

Test library: app.spec.js

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

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

But I still see the console message From constructor on the terminal.

question from:https://stackoverflow.com/questions/65641489/mocha-sinon-change-constructor

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
325 views
Welcome To Ask or Share your Answers For Others

1 Answer

if you want to replace constructor behaviour replace it with a stub, not a spy. Use sinon's createStubInstance() method for this

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

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

docs for this are written here https://sinonjs.org/releases/v9.2.3/stubs/


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...