【发布时间】:2020-10-16 02:14:35
【问题描述】:
我在尝试模拟构造函数时遇到问题。
这是我要测试的主要类
// main.js
import { Handler } from './handler/handler.js';
var lh = new Handler(windowAlias, documentAlias);
// rest of code
这是我的 Handler 函数的外观。我试图模拟这个
//handler.js
export function Handler(windowAlias, documentAlias) {
this.windowAlias = windowAlias;
this.documentAlias = documentAlias;
this.attachEventListners = function(globalSet) {
// do something
};
}
以及测试代码:
// main.test.js
import { Handler } from 'handlers/handler'
describe('main script', () => {
it('test handler', () => {
jest.mock('handlers/handler', () => jest.fn())
const mockEventListner = jest.fn()
Handler.mockImplementation(() => ({mockEventListner}))
//call main.js
expect(mockEventListner).toBeCalledTimes(1);
})
我提到了this 堆栈溢出并尝试过,但现在我收到错误,例如 _handler.Handler 不是执行 new Handler() 的行上的构造函数。当它是构造函数时,我如何模拟新的 Handler 调用
【问题讨论】:
-
为什么不直接使用模拟实现?
标签: javascript jestjs mocking