嘿大家我创建了一个可以管理和控制URL查询字符串的包。 我把它发布给npm。并将一些测试写入包的核心
" parser.js" - 将查询字符串解析为对象
" strigifyer.js" - 使对象成为URL查询字符串
我现在用" mocha"来测试这些文件。和"期待"
有一个主文件可以管理上述文件,并且该文件也可以在不刷新的情况下将字符串查询到URL。它使用window.history对象。
我应该怎样做才能成功测试主文件(index.js)?
我需要窗口和历史记录对象来检查我使用api后是否有变化。
谢谢。答案 0 :(得分:1)
如果我理解正确,那么公开您的资料库的模块是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()
至少被调用一次。最后它会恢复间谍,否则其他测试可能会很奇怪。