我想对不使用导出的前端代码进行单元测试。 I'm told认为Rewire.js是这样做的方式。我也想为此使用Jest,但是如果有已知可行的替代方法,我欢迎您提出建议。
我的设置如下:
frontend.js
let dateInput = document.getElementById('date');
// Other code that I want to test
frontend.test.js
const rewire = require('rewire');
const { JSDOM } = require("jsdom");
beforeAll(() => {
const { document } = (new JSDOM(`...`)).window;
global.document = document;
});
test('script initializes', () => {
let frontend = rewire('../src/frontend.js');
});
不幸的是,在使用npx jest
运行时,它会出错:
TypeError: Cannot read property 'getElementById' of undefined
显然,Rewire.js没有注意我定义的document
全局变量。如何使它起作用,或者可以使用哪些其他工具来实现相同的目的?