问题标签 [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.
javascript - 使用 chai-http 测试的测试没有运行
我尝试使用 chai-http 测试我的路由文件,但它归档是因为:“TypeError:套件参数“title”必须是一个字符串。收到类型“number”
我的 test.js
路线:
mocha.js - chai-http 响应始终未定义
我正在尝试运行此测试,但 res 始终未定义,这很奇怪,因为当我从邮递员那里尝试时,它的工作正常
我的测试:
多谢
typescript - Chai.request 不是函数
我有以下简单的代码
每次我跑
我收到以下错误
TypeError:chai.request 不是函数
我用同样的问题查看了其他 stackoverflow 帖子。他们都说添加
应该解决问题
但是,正如你所看到的,我已经有了。
有任何想法吗?
node.js - 具有数据库访问权限的单元测试 HTTP Post 请求
您好我目前正在尝试为我的 HTTP 请求学习和实施一些单元测试。目前我有一个 SQlite 数据库设置和一个简单的发布请求。这是我到目前为止写的测试:
我似乎收到无法打开数据库文件的错误。目前我只是连接到 app.js 文件中的数据库,使用const dbPath = "./database/database.db";
和 const dbConnection = sqlite.open(dbPath, { Promise });
我似乎也收到有关错误使用 .catch 的错误?这是错误日志:
谢谢你的帮助!
编辑:
这是我正在测试的特定发布请求,它使用 MQTT 检查发送的消息是否发送到该主题结构,然后插入到数据库中。
node.js - 在 Node + Express appp 中使用 Mocha 和 Chai 测试 try catch
我有 nodeJS 应用程序,路线简单,如下所示:
我可以使用下面的代码成功测试 try 块,但是如何测试 catch 块?
测试 try 块:
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
部分没有被正确读取或根本没有被读取。这解释了为什么这不起作用,但它没有解释为什么它只是不能与测试一起使用。
javascript - chai.use(chaiHttp); 一次还是在每个测试文件中?
将 Chai HTTP ( https://www.chaijs.com/plugins/chai-http/ ) 添加到 Node 项目测试。
使用插件(如文档中所示)正在使用:
我想知道是否需要chai.use(chaiHttp);
在我使用 chaiHttp 的每个测试文件中添加?或者我可以在其中一项测试中设置一次 chaiHttp 吗?
它可以在一个公共文件中吗?
express - 使用 mocha、chai、chai-http 和 sinon 在 Express API 上测试 try-catch
我有一个使用 Express 创建的 API 应用程序,在控制器上具有此功能
我正在尝试使用 sinon 测试“catch block”的工作,但我不明白。这是我尝试的数百个测试之一:
但是响应的状态为 200 并获取所需的数据。
任何想法?
typescript - 如何在打字稿中使用 sinon 存根表达中间件?
我正在尝试使用 typescript、mocha、sinon 和 chai-http 为我的 express 路由器编写一个集成测试。该路由器使用我编写的自定义中间件,用于检查标头中的 JWT。
理想情况下,我想存根 myauthMiddleware
以便我可以控制其行为,而无需为每个测试用例实际提供有效/无效的 JWT。
当我尝试authMiddleware
在我的测试中存根时,我意识到 expressapp
使用的是实际实现authMiddleware
而不是模拟一个。
我尝试在使用打字稿的动态导入进行模拟app
后authMiddleware
导入,但它也不起作用。
authMiddleware.ts
主题路由器.ts
应用程序.ts
主题测试.ts
当我运行上述测试时,我看到authMiddleware
没有调用 mock。app
在测试中使用对象的真实实现authMiddleware
。
有没有办法存根 express 中间件并将其显式传递给应用程序?
node.js - Chai-http 测试通过 Github 操作返回“错误:getaddrinfo EAI_AGAIN undefined”
我正在学习如何使用 chai-http 对 REST API 进行单元测试。测试在本地运行顺利,但在github上作为 PR 的 CI 检查运行时抛出此错误:
测试代码:
如您所见,我测试了直接导入它的服务器,.request(app)
但我也尝试过指向 localhost:port 时出现相同的错误。
我看到这是主机名和 DNS 的问题,但我不知道如何设置 CI 脚本和/或测试以在 Github 下正常工作。
对此有何见解?提前致谢。