【发布时间】:2018-08-17 10:20:09
【问题描述】:
背景
所以,我一直在通过一个教程来了解 JS 测试框架,并了解到要测试 Web UI,最好使用 JSDOM 库,因为它不需要浏览器并带来可以以无头方式执行的 DOM。
对于断言库,我使用 Chai,作为测试框架,我选择了 Mocha
测试用例:我想通过读取其 h1 标记的值来测试一个 html 文件,即在这种情况下为 Hello World,我会将其断言为 true。
import {expect} from 'chai'
import jsdom from 'jsdom'
import fs from 'fs'
describe('index.html', () => { // eslint-disable-line
it('should say hello' , () => { // eslint-disable-line
const index = fs.readFileSync('./src/index.html', 'utf-8')
jsdom.env(index, function (err, window) { // eslint-disable-line
const h1 = window.document.getElementsByTagName('h1')[0]
expect(h1.innerHTML).to.equal('Hello World!')
window.close()
})
})
})
这对于旧版本的 JSDOM 包可以正常工作,但正如我已经检查过 JSDOM 文档,即 https://github.com/jsdom/jsdom 那样,新的方法是 JSDOM 构造函数。
那么,我如何迁移这个测试用例以符合 JSDOM 库的更新样式。
【问题讨论】:
-
我建议切换到Jest,因为它基本上是为您预先配置的 Mocha + Chai + JSDOM。
-
@AKX 感谢您的推荐,但现在我想了解一些基本的东西,然后会使用像 Jest 这样的脚手架测试框架。如果你能帮助我了解 JSDOM 的新语法,我会很棒。