Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.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/unit-testing/4.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 涉及API的单元测试_Javascript_Unit Testing_Rest - Fatal编程技术网

Javascript 涉及API的单元测试

Javascript 涉及API的单元测试,javascript,unit-testing,rest,Javascript,Unit Testing,Rest,我是单元测试的新手,所以对我放松点。我有一些查询RESTful API的模块。我发现在每个测试套件中,我都使用几行代码来构建一个简单的ExpressJS web服务器,以模拟一些可以从测试中调用的路由。在每一个测试套件中都可以编写这样的代码,这已经过时了。一定有更好的办法。有什么建议吗 顺便说一句,我的代码都是在NodeJS和浏览器中运行的javascript 更新:我不确定我在最初的评论中是否解释得很好,所以这里有一些代码示例来帮助进一步解释 假设我的测试套件正在测试一个“Person”模块:

我是单元测试的新手,所以对我放松点。我有一些查询RESTful API的模块。我发现在每个测试套件中,我都使用几行代码来构建一个简单的ExpressJS web服务器,以模拟一些可以从测试中调用的路由。在每一个测试套件中都可以编写这样的代码,这已经过时了。一定有更好的办法。有什么建议吗

顺便说一句,我的代码都是在NodeJS和浏览器中运行的javascript

更新:我不确定我在最初的评论中是否解释得很好,所以这里有一些代码示例来帮助进一步解释

假设我的测试套件正在测试一个“Person”模块:

通常,我会使用以下路径创建一个小型express服务器:

app.post("/api/person/*", function (req, res) { res.send(200, {data:0123}) });
但我写的每一个测试套件都必须这样做,这太糟糕了。如果这可以通过使用存根或间谍来实现,我希望看到一个如何实现的例子。或者,如果我做错了,请让我知道我可以做些什么。谢谢

您可以使用stub/spy来截取/刺探ajax调用,检查它们执行了多少次,传递了哪些参数等。有关更多信息,请查看Sinon网站的示例。

个人而言,我使用提供的“刺探”对象来“刺探”http调用=>模拟。
因此,无需调用真正的实现,也无需配置假路由。
目标是确保在某些情况下发出预期的呼叫,而不是意外的呼叫


像@BuDen evokes一样,它也非常适合存根。

我仔细阅读了Sinon文档,这看起来像是我要找的,特别是存根、假XMLHttpRequest或假服务器应该可以做到这一点。@Skinnejoe与假服务器相关,当您想验证请求的正确标题时,它非常有用。例如,CRUD操作。在其他情况下,Sinon会帮助您执行存根ajax,并使用API应返回的内容对其进行模拟,这些内容将被传递给回调以验证正确的回调计算。
app.post("/api/person/*", function (req, res) { res.send(200, {data:0123}) });