我正在尝试为函数创建单元测试。在测试中,我想使用jsdom 包document
来模拟全局对象(例如document.getElementById()
)。我已经安装在我的项目中,并在我的测试文件 ( ) 中添加了一行:jsdom
test.pageContent.js
const jsdom = require('jsdom')
但是从命令行,当我浏览这个文件然后执行它时,它会失败并显示以下输出:
>> node_modules/.bin/browserify test.pageContent.js -t [ babelify ] --outfile test-bundle.js && node test-bundle.js
Browserslist: caniuse-lite is outdated. Please run:
npx browserslist@latest --update-db
C:\Users\snarl\development\project\test-bundle.js:59075
module.exports = typeof self == 'object' ? self.FormData : window.FormData;
ReferenceError: window is not defined
为什么会发生这种情况,我该如何解决?
我以这种方式浏览器,因为被测函数位于 ES6 模块中,该模块本身调用其他 ES6 模块。如果我不这样做 Browserify 和 Babelify,就会发生错误。也许这就是我需要调查的?
值得注意的
在命令行中,如果我使用 Browserify 命令执行测试文件,但没有任何 Babelify 转换,则会发生相同的错误。
在命令行中,如果我在没有 Browserify 命令的情况下执行测试文件,则根本没有错误。
我使用Tape作为我的单元测试工具。