Jsdom.env 到新的 JSDOM,迁移
Jsdom.env to new JSDOM , migration
Background
所以,我一直在按照教程了解 JS 测试框架,并且了解到要对 Web UI 进行测试,最好使用 JSDOM 库不需要浏览器并带来 DOM 然后可以无头方式执行。
对于断言库,我使用 Chai 作为测试框架,我选择了 Mocha
Test Case : I would like to test an html file by reading its h1 tag's value i.e. Hello World in this case and I would assert it to 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 库的更新样式。
不知何故我已经成功启动了我的测试用例并且运行。
describe('index.html', () => { // eslint-disable-line
it('should say hello' , (done) => { // eslint-disable-line
const options = { }
JSDOM.fromFile('./src/index.html', options).then(dom => {
const h1 = dom.window.document.getElementsByTagName('h1')[0]
expect(h1.innerHTML).to.equal('Hello World!')
done()
}).catch(done)
})
})
Background
所以,我一直在按照教程了解 JS 测试框架,并且了解到要对 Web UI 进行测试,最好使用 JSDOM 库不需要浏览器并带来 DOM 然后可以无头方式执行。
对于断言库,我使用 Chai 作为测试框架,我选择了 Mocha
Test Case : I would like to test an html file by reading its h1 tag's value i.e. Hello World in this case and I would assert it to 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 库的更新样式。
不知何故我已经成功启动了我的测试用例并且运行。
describe('index.html', () => { // eslint-disable-line
it('should say hello' , (done) => { // eslint-disable-line
const options = { }
JSDOM.fromFile('./src/index.html', options).then(dom => {
const h1 = dom.window.document.getElementsByTagName('h1')[0]
expect(h1.innerHTML).to.equal('Hello World!')
done()
}).catch(done)
})
})