如何解决使用玩笑,jsdom和重新连线时,出现ReferenceError“未定义导航器”
我一直在开玩笑地进行测试设置。我要测试一些客户端代码(准确地说是电子预加载脚本),并希望使用重接线来测试未导出的方法。
正在测试的脚本依赖于另一个访问window.navigator
的脚本。我可以require
测试脚本,但是当我改用ReferenceError: navigator is not defined
时,它在dom.js
的第一行失败,并出现rewire
错误。
这是显示错误的最小设置。我不使用Jest配置,因为它默认为jsdom
测试环境。
dom.js
console.log('during rewire:',global.navigator) // <-- prints undefined
console.log('The added property:',global.FOO) // <-- prints undefined
const userAgent = navigator.userAgent; // <-- fails.
index.js
const myDom = require('./dom.js');
module.exports = {
doSomething: () => {}
}
index.spec.js
const rewire = require('rewire');
describe('Basic test',() => {
it('exports a function',() => {
global.FOO = 'Bar'
console.log('before rewire:',global.navigator) // prints Navigator {}
console.log('The added property:',global.FOO) // prints Bar
// const main = require('.') // <-- works with require
const main = rewire('.') // <-- but fails with rewire
expect(typeof main.doSomething).toBe('function');
})
})
似乎rewire
使用了不同的global
,一个不再具有jsdom
环境(或还没有?)的环境(例如global.window.navigator
或{{ 1}})。
我们非常感谢您的帮助,通常我会在google上找到几乎所有问题的解决方案,但是这次我迷路了。
要进行复制,请将这三个文件复制到一个文件夹中,然后执行global.navigator
,npm init
,npm install jest rewire
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。