问题标签 [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 回答
43 浏览

javascript - 使用 chai-http 测试的测试没有运行

我尝试使用 chai-http 测试我的路由文件,但它归档是因为:“TypeError:套件参数“title”必须是一个字符串。收到类型“number”

我的 test.js

路线:

0 投票
0 回答
292 浏览

mocha.js - chai-http 响应始终未定义

我正在尝试运行此测试,但 res 始终未定义,这很奇怪,因为当我从邮递员那里尝试时,它的工作正常

我的测试:

多谢

0 投票
2 回答
439 浏览

typescript - Chai.request 不是函数

我有以下简单的代码

每次我跑

我收到以下错误

TypeError:chai.request 不是函数

我用同样的问题查看了其他 stackoverflow 帖子。他们都说添加

应该解决问题

但是,正如你所看到的,我已经有了。

有任何想法吗?

0 投票
0 回答
84 浏览

node.js - 具有数据库访问权限的单元测试 HTTP Post 请求

您好我目前正在尝试为我的 HTTP 请求学习和实施一些单元测试。目前我有一个 SQlite 数据库设置和一个简单的发布请求。这是我到目前为止写的测试:

我似乎收到无法打开数据库文件的错误。目前我只是连接到 app.js 文件中的数据库,使用const dbPath = "./database/database.db";const dbConnection = sqlite.open(dbPath, { Promise });

我似乎也收到有关错误使用 .catch 的错误?这是错误日志:

谢谢你的帮助!

编辑:

这是我正在测试的特定发布请求,它使用 MQTT 检查发送的消息是否发送到该主题结构,然后插入到数据库中。

0 投票
1 回答
651 浏览

node.js - 在 Node + Express appp 中使用 Mocha 和 Chai 测试 try catch

我有 nodeJS 应用程序,路线简单,如下所示:

我可以使用下面的代码成功测试 try 块,但是如何测试 catch 块?

测试 try 块:

0 投票
1 回答
164 浏览

javascript - 使用 ChaiHttp 发送 Mapquest/Google API 密钥

上下文:我有一个正在开发的后端 API 应用程序,我对 API 进行了一系列测试。该项目在这里:https ://github.com/jeffnyman/devcamper_api 。这个项目有一系列我一直在开发的测试。至于测试工具,我使用的是 ChaiHttp、Jest 和 mongodb-memory-server。我可能应该注意到这是我的第一个真正的 JavaScript 项目,我正在学习测试工具。

问题:所有这些测试都运行良好……直到我添加了一些地理编码器功能。具体来说,我添加了node-geocoder包。

错误情况:

运行测试时,我在某些路线上收到以下错误:

作为对我的逻辑的简要回顾:

我有一个添加了地理编码器逻辑的 Bootcamp 模型。具体来说,该逻辑address从请求中获取传递的内容,将其分解,对其进行地理编码,然后丢弃address传入的内容,创建一个formattedAddress. 您可以在模型中看到具体的地理编码器逻辑。它node-geocoder本身是在我的地理编码器模块中设置的。

正如您在我的地理编码器文件中看到的那样,我包括对GEOCODER_API_KEY. 您在 repo 中看不到包含此密钥的文件(我有它.gitignore),但它在我的本地项目中。

至关重要的是:当我通过 Postman 运行 API 调用时,一切运行正常。所以我知道所有的逻辑都已连接并正常工作。

所以看起来问题仅在于运行测试时,没有找到 API 密钥并将其用作请求的一部分。具体来说,我的地理编码器中的这一行是生成错误的地方:

但是,除了我使用的是内存中的 mongo 数据库这一事实之外,我在这里并没有嘲笑任何东西。所以我不清楚为什么在运行测试时模型的逻辑没有被正确触发。

从其他问题中,我尝试.set在测试中添加一行,如下所示:

然而,这似乎并没有奏效。我犯了同样的错误。

console.log(options);所以我尝试在我的geocoder.js文件中放入一个。而且,你瞧,这会返回:

嗯,这似乎是个问题!选项设置如下:

所以请注意我provider和我apiKey的返回未定义,这意味着这些process.env部分没有被正确读取或根本没有被读取。这解释了为什么这不起作用,但它没有解释为什么它只是不能与测试一起使用。

0 投票
1 回答
382 浏览

javascript - chai.use(chaiHttp); 一次还是在每个测试文件中?

将 Chai HTTP ( https://www.chaijs.com/plugins/chai-http/ ) 添加到 Node 项目测试。

使用插件(如文档中所示)正在使用:

我想知道是否需要chai.use(chaiHttp);在我使用 chaiHttp 的每个测试文件中添加?或者我可以在其中一项测试中设置一次 chaiHttp 吗?

它可以在一个公共文件中吗?

0 投票
1 回答
485 浏览

express - 使用 mocha、chai、chai-http 和 sinon 在 Express API 上测试 try-catch

我有一个使用 Express 创建的 API 应用程序,在控制器上具有此功能

我正在尝试使用 sinon 测试“catch block”的工作,但我不明白。这是我尝试的数百个测试之一:

但是响应的状态为 200 并获取所需的数据。

任何想法?

0 投票
1 回答
1381 浏览

typescript - 如何在打字稿中使用 sinon 存根表达中间件?

我正在尝试使用 typescript、mocha、sinon 和 chai-http 为我的 express 路由器编写一个集成测试。该路由器使用我编写的自定义中间件,用于检查标头中的 JWT。

理想情况下,我想存根 myauthMiddleware以便我可以控制其行为,而无需为每个测试用例实际提供有效/无效的 JWT。

当我尝试authMiddleware在我的测试中存根时,我意识到 expressapp使用的是实际实现authMiddleware而不是模拟一个。

我尝试在使用打字稿的动态导入进行模拟appauthMiddleware导入,但它也不起作用。

authMiddleware.ts

主题路由器.ts

应用程序.ts

主题测试.ts

当我运行上述测试时,我看到authMiddleware没有调用 mock。app在测试中使用对象的真实实现authMiddleware

有没有办法存根 express 中间件并将其显式传递给应用程序?

0 投票
0 回答
557 浏览

node.js - Chai-http 测试通过 Github 操作返回“错误:getaddrinfo EAI_AGAIN undefined”

我正在学习如何使用 chai-http 对 REST API 进行单元测试。测试在本地运行顺利,但在github上作为 PR 的 CI 检查运行时抛出此错误:

测试代码:

如您所见,我测试了直接导入它的服务器,.request(app)但我也尝试过指向 localhost:port 时出现相同的错误。

我看到这是主机名和 DNS 的问题,但我不知道如何设置 CI 脚本和/或测试以在 Github 下正常工作。

对此有何见解?提前致谢。