Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在nodejs中测试URL查询字符串_Javascript_Node.js_Testing_Npm - Fatal编程技术网

Javascript 在nodejs中测试URL查询字符串

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后是否

大家好,我制作了一个可以管理和控制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文档并更好地理解它们。谢谢您,我将尝试更多地理解它