Rii*_*ina 3 javascript testing mocha.js jsdom sinon
我有一个问题,测试使用window.DOMParser一些javascript
const stripLink = (url) => {
const parser = new DOMParser()
const link = parser.parseFromString(unescape(url),
'text/html').querySelector('a')
return link ? link.getAttribute('href') : url
}
Run Code Online (Sandbox Code Playgroud)
在摩卡咖啡中测试时会发出警告。
node:22883) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): ReferenceError: DOMParser is not defined
Run Code Online (Sandbox Code Playgroud)
我猜这是因为在节点没有的DOMParser。我该如何解决?我尝试过各种事情,例如
var DOMParser = require('xmldom').DOMParser
sinon.stub(window, 'DOMParser', DOMParser)
Run Code Online (Sandbox Code Playgroud)
想,如果我有XMLDOM解析器它应该工作测试替代window.DOMParser,但事实并非如此。
任何想法如何得到这个工作?
还有另一个类似的解决方法。您需要安装以下软件包:
npm install jsdom jsdom-global --save-dev
Run Code Online (Sandbox Code Playgroud)
然后确保在setup.js文件中或在第一个测试运行之前运行以下代码:
setup.js
require('jsdom-global')()
global.DOMParser = window.DOMParser
Run Code Online (Sandbox Code Playgroud)
这将允许您DOMParser从srcs文件中进行调用,而无需从全局对象中提取文件。
档案结构
.
??? src
??? tests
??? setup.js
??? some-test.spec.js
Run Code Online (Sandbox Code Playgroud)
更换
const parser = new DOMParser()
Run Code Online (Sandbox Code Playgroud)
和
const parser = new window.DOMParser()
Run Code Online (Sandbox Code Playgroud)
成功了。似乎 JSDOM 已经支持 DOMParser 但是您需要在代码中显式调用 window.DOMParser() 才能使其工作。
| 归档时间: |
|
| 查看次数: |
1545 次 |
| 最近记录: |