How to test a class method with Jest
September 01, 2020
How to test if a method has been called:
class Person {
greet() {
console.log('Hi!');
}
}
test('greet has been called', () => {
const person = new Person();
// We have to spy on the instance of the Person class because jest.spyOn expects an object as its first argument
const spyOnGreet = jest.spyOn(person, 'greet');
person.greet()
expect(spyOnGreet).toHaveBeenCalled();
});
How to test a method that gets called in the constructor:
class Person {
constructor() {
this.greet();
}
greet() {
console.log('Hi!');
}
}
test('greet has been called', () => {
// Now we have to spy on the prototype of the Person class because jest.spyOn expects an object as its first argument
const spyOnGreet = jest.spyOn(Person.prototype, "greet");
const person = new Person();
expect(spyOnGreet).toHaveBeenCalled();
});