Я пытаюсь проверить, что метод X класса A вызывает импортированную функцию Y. Класс A является подклассом класса B, который должен быть отключен.
Класс А выглядит так:
const B = require('./B');
const { Y } = require('../util');
class A extends B {
constructor() {
super('/A');
this.setCors('');
this.app.post('', this.X.bind(this));
}
X(req, res) {
Y();
}
}
module.exports = A;
Попытка тестирования (после Jest Official Docs ):
const A = require('../path/to/A');
const B = require('../path/to/B');
jest.mock('../path/to/B', () => {
return jest.fn().mockImplementation(() => {
return { setCors: jest.fn(), app: { post: jest.fn() } };
});
});
test('method X calls function Y', () => {
(new A()).X();
expect(Y).toBeCalled();
});
Это дает ошибку TypeError: Cannot read property 'bind' of undefined
о конструкторе A.
Возможно, надо просто издеваться над конструктором, но я не уверен, как это сделать.