Javascript 在nodejs中测试URL查询字符串
大家好,我制作了一个可以管理和控制URL查询字符串的包。 我把它发表在npm上。并为包的核心编写了一些测试 “parser.js”-将查询字符串解析为对象 “strigifyer.js”-使对象成为URL查询字符串 我现在用“摩卡”和“期望”测试这些文件 有一个主文件管理上述文件,并且该文件也是push-to-query-string-to-URL,无需刷新。它使用window.history对象 要成功测试主文件(index.js),我应该做些什么? 我需要窗口和历史对象来检查使用api后是否有更改 以下是该软件包的帮助:Javascript 在nodejs中测试URL查询字符串,javascript,node.js,testing,npm,Javascript,Node.js,Testing,Npm,大家好,我制作了一个可以管理和控制URL查询字符串的包。 我把它发表在npm上。并为包的核心编写了一些测试 “parser.js”-将查询字符串解析为对象 “strigifyer.js”-使对象成为URL查询字符串 我现在用“摩卡”和“期望”测试这些文件 有一个主文件管理上述文件,并且该文件也是push-to-query-string-to-URL,无需刷新。它使用window.history对象 要成功测试主文件(index.js),我应该做些什么? 我需要窗口和历史对象来检查使用api后是否
谢谢。如果我理解正确,公开库的模块是
src/index.js
从index.js的代码风格来看,我建议使用它来测试代码流
单元测试可以是:
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();
})
此代码在
pushtoul()
上创建一个间谍,调用reset()
并断言queryStringObject
现在是一个空对象,并且至少调用了一次pushtoul()
。最后,它会恢复间谍,否则其他测试可能会表现得很奇怪。nice,我想我明白了,你是说有了这个库,我可以测试我所有的“index.js”文件,但我实际上无法测试pushtoul()方法?我可以断言它被称为?(如果是,这很好,也许还有另一种方法来测试pushtoul())@Nevo您可以测试pushtoul(),但您需要一次测试一件事情,并监视/存根/模拟其他部分。您可以创建另一个测试来测试pushtour()并模拟它的依赖关系。首先,感谢您的回答,这对我来说已经足够好了。说清楚一点,你的意思是模仿“窗口”对象吗?像这样吗?@Nevo-nope,我的意思是模拟一个你愿意测试的对象的方法。您可以查看sinon文档并更好地理解它们。谢谢您,我将尝试更多地理解它