大家好,我创建了一个可以管理和控制URL查询字符串的包。我把它发布给npm。并将一些测试写入包的核心
“parser.js” - 将查询字符串解析为对象
“strigifyer.js” - 使对象成为URL查询字符串
我现在用“mocha”和“expect”测试这些文件
有一个主文件管理上述文件,该文件也推送到URL查询字符串而不刷新。它使用window.history对象。
我应该怎样做才能成功测试主文件(index.js)?
我需要窗口和历史对象来检查我使用api后是否有变化。
如果它的帮助,这是包:https://github.com/nevos12/query-string-manager
谢谢。
如果我理解正确,那么暴露你的库的模块就是src/index.js
从index.js的代码样式,我建议使用sinon来测试你的代码流。
单元测试可以是:
import sinon from 'sinon'
import qs from 'src/index.js'
it('should reset queryStringObject', () => {
const pushToUrlSpy = sinon.spy(qs, 'pushToUrl');
qs.reset(true);
expect(qs.queryStringObject).to.equal({});
expect(pushToUrlSpy.called);
pushToUrlSpy.restore();
})
此代码在pushToUrl()
上创建一个间谍,调用reset()
并断言queryStringObject
现在是一个空对象,并且pushToUrl()
被调用至少一次。最后它恢复了间谍,否则其他测试可能会很奇怪。