问题标签 [chai-http]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1219 浏览

node.js - 如何为多个 mocha chai-http 测试文件启动服务器?

我在 mocha chai-http 测试的 before 块中启动我的节点服务器。

我让它非常适合单个测试文件。但是,当我尝试在单个命令中运行多个测试NODE_ENV=test mocha test/**/*.js时,出现错误。

我试图让节点服务器在每个测试文件的不同端口上启动。这不起作用,出现节点服务器启动错误。

我现在认为,如果我可以有一个在我的其他测试文件之前运行的单个 mocha 文件来启动服务器,然后在其他测试文件之后运行一个文件来终止/停止服务器,那就太好了。

我该怎么办。

下面是我的一些代码:

这是我的一个测试文件供参考:

0 投票
1 回答
2350 浏览

node.js - 使用 chai-http 设置接受的 CA 列表并忽略 SSL 错误

我正在尝试使用 chai/chai-http 为我的节点代码编写单元测试。在我将服务器切换到 HTTPS 服务器之前一切正常,但是因为我的证书是由内部公司根签名的,并且我使用的证书的公用名与 localhost 不匹配,所以 chai 在我的请求中抛出错误.

我想做以下事情:

  1. 忽略与域名验证相关的 SSL 错误。

  2. 设置要检查的 CA 列表。如果无法做到这一点,我可以跳过所有客户端证书检查。

我的代码如下:

我得到以下堆栈跟踪:

0 投票
2 回答
3029 浏览

node.js - chai-http 和 async.each,抛出“超过 2000 毫秒的超时......”

我用 chai-http 进行了一个简单的测试,我尝试使用 async.each 测试几个 URL,但是当请求花费超过 2 秒时,我得到了错误。

我认为“完成”是正确的,但我不断收到错误消息,我做错了什么?即使没有异步,错误也会显示,只是简单的 chai 请求,只有一个请求......所以很确定不是异步问题,但我使用 chaiHttp 不好。

我也尝试使用“then/catch”而不是“end”,但结果是一样的。

我有一个类似的问题,在相同的测试脚本中,但使用数据库,如果查询时间超过 2 秒,它会中断......同样的错误,也使用“完成”:

0 投票
2 回答
577 浏览

tdd - Mocha TDD,Chai-http 没有记录任何响应

我正在尝试使用 chai-http 测试身份验证 api,但是我无法获得此特定块的任何响应 -

对于上面的代码块,我没有打印任何日志。谁能帮助我在这里错过什么?

0 投票
1 回答
155 浏览

mongodb - 当 mongo 中不存在集合时,mongoose 模型保存不会触发回调并传递给 chai-http

我创建了一个 post api 并使用 mongoose 模型将请求数据保存到数据库。然后我使用邮递员来测试这个api。一切正常。一切正常我的意思是创建集合,将数据保存到集合中,并从响应中获取数据。看下面的代码

然后我尝试向这个 api 添加测试。我将 mocha 与 chai-http 一起使用。看下面的代码

Step1:删除数据库(没有数据库,没有收集)

Step2:我使用 mocha path-to-test-file --timeout 20000 运行测试

Step3:重复步骤2

在第 2 步之后,我没有看到任何记录的数据(console.log('POST', res.body))。但是,已创建集合并将数据保存到 mongo 数据库。

在第 3 步之后,我确实看到了记录的数据。我假设是因为集合已经存在于第 2 步的 mongo 中。

然后我更进一步。我从第 1 步重复到第 3 步。但是这次我在模型保存回调中输入了一个日志,然后我意识到在step2之后也没有调用回调。但是如果我使用邮递员而不是 chai-http,它每次都有效。

有没有人有同样的问题?这是猫鼬模型和 chai-http 之间的能力问题吗?我错过了设置还是什么?

就个人而言,我认为无论 mongo 中是否存在该集合,它都应该有效。

0 投票
0 回答
424 浏览

mocha.js - mocha - chai-http 返回状态 500

我正在使用 Mocha、Chai 和 Chai HTTP 在 JavaScript CRUD 应用程序上运行测试。该应用程序使用 Sequelize。所有测试的函数 GET 和 POST 在浏览器中正确。但是,我的所有测试都以 500 状态失败。当我尝试获取未包含在我的应用程序中的路由时,我得到了 404 状态,所以我很确定服务器已正确连接到测试。有任何想法吗?

这是测试套件:

这是我的服务器:

0 投票
1 回答
1273 浏览

javascript - Chai 无法识别内容类型“application/javascript”

无论我的服务器实际返回什么,res.body={}如果内容类型是“应用程序/javascript”,Chai 总是给我。

这是我的服务器:

它输出console.log("test");在此处输入图像描述

但测试没有看到它:

res.body当内容类型为“application/json”时工作得很好。

响应中也没有console.log("test");字符串的痕迹:

当内容类型为“application/json”时,如何断言响应?

0 投票
1 回答
305 浏览

node.js - Mocha、Chai 和 Sinon:检查 API 的内部工作

假设我有一个 POST 端点/user/:id,这个端点在内部调用一个函数getUserData(id),然后将结果返回给调用者,调用者在JSON.stringify()ing 之后又返回输出。

现在,我需要确保getUserData(id)至少调用一次。getUserData(id)当我使用chai-http向服务器发出发布请求时,如何存根/间谍功能?这甚至是正确的方法吗?

0 投票
2 回答
2929 浏览

javascript - 如何检查多个 chai-http 请求何时在 mocha before block 中真正完成?

我在一组 mocha 单元测试中使用了 before 块,并且在其中我正在迭代一组调用以从 REST API 获取信息。我正在使用 chai-http 来执行此操作。但是我遇到的问题是在我发出的一系列ndone()请求完成之前调用该方法。在 end 块中调用 done 会导致多次调用,但放在块之外意味着它在我真正完成之前就被调用了!这是一个前块的例子:done()

有没有办法检测所有这些请求何时完成,然后我可以调用一个done()来确保我的测试只在正确的上下文设置下执行?

0 投票
1 回答
2275 浏览

node.js - 测试 GraphQL API

我正在测试我的 GraphQL API,但我想稍微清理一下。值得注意的是,我正在使用chai-http网络请求。这是我目前正在做的事情(有效):

但是,我想清理一下并执行以下操作:

但是,这种放置对象输入的样式不起作用并返回错误的请求错误。以下是返回的错误对象的部分内容:

在此处输入图像描述

任何想法为什么这不起作用?提前致谢!