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

node.js - 测试使用 jwt 令牌保护的路由的正确方法是什么?

虽然以下测试通过了,但我觉得我做错了。每次我需要测试安全路由时都需要登录吗?在获得初始令牌后,我尝试传递全局变量,但传递变量我发现非常反直觉。在 before() 调用中传递变量给我带来了与在嵌套承诺中传递/访问全局变量相同的问题。

0 投票
0 回答
2719 浏览

node.js - 使用 chai-http 请求的查询参数未分配给 _query 对象

我正在为 ts 节点 api 编写单元测试。

我正在使用 chai-http 来实例化/模拟请求,但是使用此处文档中提到的 .query 选项似乎实际上并未将我的查询参数添加到请求对象 qs 参数中。

检查 req 对象,它已将它们添加到 _header: _path: 和 :url 但在 _query 或 qs 下没有任何内容。接受的底层函数req将尝试使用 req.query.page...req.query.size等解析值,但由于请求查询对象未定义而中断。

但是 _header: , _path: 和 url: 显示

有谁知道为什么会这样?
是否有不同的 mocha 请求库可以提供正确的查询参数分配?

我已经尝试像这样手动添加它们,它可以工作并将它们添加到 qs. 但我希望 .query() 将它们添加到此处。

0 投票
1 回答
176 浏览

node.js - chai-http:无法在断言处读取未定义的属性“标题”。

当我在 gitlab 管道上运行单元测试时出现此错误,但它在我的本地环境中运行良好:

这是我的单元测试文件架构:

该应用程序也在 docker 环境中运行。

单元测试由以下命令运行:

common.js:

顶.js:

AuthGetRegister.js:

我以 AuthGetRegister 为例,但我的所有单元测试都出现相同的错误。

我已经尝试过这里提出的解决方法,但它不起作用。

0 投票
0 回答
45 浏览

asynchronous - 异步完成()在 moch-chai 中不起作用。无法访问 http 响应

我正在尝试遵循此处提供的内容-https: //www.chaijs.com/plugins/chai-http/

我的代码片段如下

即使我使用 done()it添加了回调,我的步骤中的日志也会首先执行。但是,在那之后,我可以从 chai 块内部看到具有预期值的日志,然后是done is not a function错误。

我的目标是将响应存储在一个对象中,并在接下来的多个步骤中访问它。

0 投票
0 回答
338 浏览

node.js - Chai:TypeError:无法读取未定义的属性“地址”

我开始使用 chai-HTTP 测试,但我真的不知道为什么我会不断收到

有谁知道代码有什么问题?我已经尝试了一些我在这里找到的解决方案,但它们似乎都不起作用。我要么无法读取“地址”,要么 app.adress 不是一个函数,是从服务器中删除 .default 。

这是测试文件:user.test.js

这是 server.js

0 投票
2 回答
345 浏览

javascript - TypeError: app.address 不是使用 chai-http 的函数

我正在尝试使用 Fastify 创建一个微 api,现在我正在测试该应用程序,但出现此错误:

我的应用程序文件是这个:

我的测试文件是:

我尝试过:

但它总是给我一些类似这样的错误:

有人知道我在做什么错吗?

0 投票
1 回答
232 浏览

node.js - 如何在 JSON 对象中发送数组以进行 ChaiHttp 单元测试?

我在 node.js 中有一个 API,我可以在其中发送多个 DeviceId 的有效负载,以更新它们的设置。例如,我要发送的示例有效负载是:

发送后,我会说 DeviceId 1,2,3 都将更新他们的设置。这工作正常,我已经在 Postman 本地对其进行了测试。我现在想编写一个单元测试来检查行为。我的单元测试如下:

在我发帖的代码中,我检查了 DeviceIds 是否出现在数组中。如果它们不在数组中,则会返回一条消息,说明 DeviceId 必须在数组中。这是代码:

当我运行上面的单元测试时,我陷入了这个 if 语句,我得到了返回的消息,即req.body.DeviceId不是数组。如果我记录typeof req.body.DeviceId,我会得到未定义的记录。为什么会这样?当我从邮递员本地发帖时,它工作正常。那就是当我在本地发送帖子时,帖子请求通过没有错误。但是chaiHttp现在用于单元测试,我遇到了一些麻烦。可能有人知道为什么在单元测试中会发生这种情况,并使其不会发生,我不会被困在这个数组检查中。任何建议将不胜感激!

0 投票
1 回答
89 浏览

node.js - 当一内一请求时,Chai-http 不检查第二个断言

我正在尝试从 /signing 获取我的令牌变量,以将其提供给名称更改路线。但断言并不总是触发。有没有更好的方法来做到这一点?我可以使用 async-await 来解决这个问题吗,如果可以,如何解决?

0 投票
1 回答
445 浏览

node.js - 使用 chai-http 和 Jest 进行测试时,如何从我的 api 返回响应

我正在尝试使用下面的代码测试我的节点 api 索引端点

index.test.js

})

  1. 我对“索引路由测试”的失败测试通过但它应该失败(已解决)。
  2. 收到的响应是未定义的(我在控制台中登录)。

我的输出如下:

输出

如何返回响应?

0 投票
0 回答
71 浏览

javascript - 用 chai 测试 express.Router() 给出“TypeError: res.send is not a function”?

我有一个像这样的控制器/路由文件..

getValue 函数如下所示。

我正在用 chai 测试以下路线,我有一个如下所示的测试文件..

通过运行测试文件,它给了我这个错误:

  1. 参数 API 测试 GET 路由(/valuebyobject 应该返回所有对象:Uncaught TypeError: res.send is not a function

但是我无法弄清楚如何使用 chai 测试我的 API 并避免这种 TypeError 的解决方案。

但是从上面将控制器文件中的 express.Router() 更改为普通的 express() 使其工作。

但我想在我的应用程序中使用 expres.Router() 。有人可以帮助如何测试 express.Router() 的端点吗?