如何使在测试模块中创建的对象在要测试的函数中可用?
例如,测试代码从xmldom
模块中获取一个DOMParser类:
测试:
import assert from 'assert';
import { DOMParser } from 'xmldom';
import { parseHtml } from './../src/parse-html.es6';
describe('HTML Parser', function () {
it('Hello World', function () {
parseHtml();
});
});
那个 DOMParser 类应该是被测试函数中使用的类:
parseHtml():
export function parseHtml(html) {
const parser = new DOMParser();
return parser.parseFromString(
`<html><head></head><body>${html}</body></html>`,
'text/html'
);
}
我如何获得 DOMParser 类,以便 parseHtml
将使用它?
我将使用 mocha
和 nodejs
进行测试。
最佳答案
你可以使用 sinon
监视或 stub xmldom
类:
import assert from 'assert';
import * as sinon from 'sinon';
import { parseHtml } from './../src/parse-html.es6';
import { default as xmldom } from 'xmldom';
// Spy on the xmldom.DOMParser() constructor
var spy = sinon.spy(xmldom, 'DOMParser');
describe('HTML Parser', function () {
it('Hello World', function () {
parseHtml();
// Check if the constructor was called once (and only once)
assert(spy.calledOnce);
});
});
在每次测试之前,确保重置 spy (spy.reset()
)。
关于javascript - 使对象在要测试的函数中可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33875451/