我的测试有一些问题,因为我从电子v11升级到v20。与此更新的remote
被从电子移动到一个新的模块@electron/remote
。
在jest.config.js
中,我有电子模块模拟Map:electron: '<rootDir>/tests/mock/electron.mock.ts'
...
const mockIpcRenderer = {
on: jest.fn(),
send: jest.fn()
};
const mockRemote = {
app: {
getPath: mockGetPath,
getAppPath() {
return '/app/working/path';
}
},
process: {
env: jest.fn()
}
};
...
export const ipcRenderer = mockIpcRenderer;
export const remote = mockRemote;
因此,在更新之后,我将remote
部分从mock中提取到一个新文件中:remote.mock.ts
const mockApp = {
getPath: mockGetPath,
getAppPath() {
return '/app/working/path';
}
};
const mockProcess = {
env: jest.fn()
};
function mockGetPath(path: string) {
return 'somtething';
}
export const app = mockApp;
export const process = mockProcess;
我在测试文件中添加了这一行:jest.mock('@electron/remote', () => require('../mock/remote.mock'));
问题是当我运行测试时,我得到了TypeError: Cannot read property 'on' of undefined
。ipcRenderer
未定义,我不知道为什么?当我将jest.mock('@electron/remote', () => require('../mock/remote.mock'));
添加到测试文件时,由于某种原因,electron.mock.ts
中的模拟不再定义。
1条答案
按热度按时间vzgqcmou1#
在
jest.config.js
中,我添加了 start 和 end 符号,并为@electron/remote
添加了一个新行,它工作正常。