问题标签 [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.
node.js - SyntaxError:在 mocha 和 chai http 测试中位置 0 的 JSON 中出现意外的令牌 A
使用 mocha 和 chai-http 为 post 端点运行集成测试。但是为了上帝的爱,不断收到 SyntaxError: Unexpected token A in JSON at position 0. 不确定下面的代码有什么问题
错误是
typescript - 无法使用 done() 或 async/await 来修复我的承诺无法解决
我正在尝试使用 chai-http 和 mocha 学习 api 测试。我已经尝试过done()
,async/await
但我不明白为什么它没有解决以下问题 -
错误-
规格文件-
否则,我没有正确实施我尝试过的解决方案。非常感谢任何帮助。
node.js - 如何使用 chai-http 下载文件?
这是我的问题:我必须测试一个丰富文件并使它们可下载的路由。我遇到的问题是我在测试期间无法获得丰富的文件。
我设法使用 Axios(用于终端命令)恢复此文件,但我必须使用 chai-http 进行测试。
路由器.js
testEnrichment.js
先感谢您 !
node.js - 如何在 mocha 中使用嵌套的 json 数据测试图像上传
这是我的测试片段。我需要使用嵌套 json 和图像传递其他数据。
`
`
它适用于没有嵌套 json 的参数,但不适用于嵌套 json。如何传递带有徽标的嵌套 json?
javascript - Chai-http [POST] 不允许在 bodyParameters 上发送数组(API 测试和 Javascript)
我在我的测试用例中发现了这种奇怪的行为。
让我们重新创建场景
我确实有 2 节课:
API.ts -> 指的是我创建请求的类。
API-op.ts -> 指的是我通过断言、期望等进行验证的类。
上下文:方法之间存在一些依赖关系。我的意思是,如果我想发布,我首先需要一个 ID,该 ID 来自一个名为 postCreateId 的方法。获得响应正文后,我将使用该 ID 传递给我的 postPublishArt 方法
所以。
我在 API.ts 上有这个方法
因此,我在 API-op.ts 上调用该方法,如下所示:
在 Postman 上,bodyparameter 需要是这样的:
注意方括号,因为 body 参数要求 ids 键必须是数组。
错误是什么:就像我只需要一个 id 作为数组传递一样,一旦我转换了该变量并将其发送到 POST 方法。POST 方法显示此错误:
我认为当您使用 ARRAY 发送 POST 但只传递一个参数时,问题与 chai-http 有关。
让我知道我是否错了
javascript - Sinon withArgs 自定义匹配器
我正在尝试使用自定义匹配器来存根一个函数,该函数在我的 node.js 服务器的测试函数中执行两次。我正在测试的函数fs.readFileSync()
使用不同的参数使用了两次。我想我可以使用stub.withArgs()
自定义匹配器两次来为两者返回不同的值。
我面临的问题是,chai-http
每当我 stub 用于测试我的休息端点时,我总是得到一个 400 状态代码fs.readFileSync()
。我的存根实现似乎阻止了休息端点甚至在休息端点内执行功能。当匹配器函数触发时,我可以验证(通过日志记录)它是否通过我node_modules
的来查看是否有任何fs.readFileSync()
函数需要返回备用值。
当我运行我的 mocha 测试时,在自定义匹配器中记录了一些日志,我可以验证node_modules
likeraw-body
有他们的fs.readFileSync()
函数被存根,但不应该返回替代值,因为匹配器返回false
(因为参数不通过我的匹配器)。但是由于某种原因,我的任何fs.readFileSync()
函数都没有被存根,甚至没有被执行,因为我的休息端点最终只返回了 400 空响应。
有没有一种特殊的方法来存根函数,比如fs.readFileSync
在测试时chai-http
?我之前能够成功存根fs.writeFileSync()
,但我在存根时遇到了麻烦fs.readFileSync()
。
node.js - 如何在节点中启动柴测试?
我有一个节点/打字稿应用程序。我正在尝试使用 chai 和 chai-http 测试路线。当我写一个明确的名字时,我可以启动一个文件:yarn test myroute.test.ts
,但yarn test
在根目录什么都不做。
此外,从不进行测试。我只在我的终端收到一个Done in 0.06s.
。没有“通过”或“失败”。
这是测试:
package.json 脚本是:"test": "test"
. 我认为这是完全错误的,但是 chai doc 没有说明要在这里写什么。
node.js - 如何在 chai 测试中使用 async/await?
我有一个没有 async/await 语法的 chai 测试,但它会崩溃。如何解决?
错误是:
error 错误 [ERR_SERVER_ALREADY_LISTEN]:Listen 方法已被多次调用而没有关闭。代码:'ERR_SERVER_ALREADY_LISTEN'
这是使用经典语法和非工作 async/await 语法的相同测试:
express - 使用 chai.request 会使所有测试失败
我正在尝试使用 mocha、chai 和 chai-http 进行简单测试。出于测试目的,我使用 Express 4 typescript 模板在 Visual Studio 2019 中创建了一个简单的项目。
此外,我安装了以下软件包:
- 摩卡(+@types/摩卡)
- 柴
- 柴http
- @types/superagent(这解决了一些缺失的名字)
然后我更改了项目选项以使用 mocha 测试框架并指向正确的测试文件夹。
然后我创建了一个打字稿 mocha 单元测试文件并将其内容更改为以下内容(未更改的测试文件按预期工作):
app.ts 文件如下所示:
我只添加了最后一行“导出默认服务器;”
当我现在运行测试时,所有测试都失败了,即使测试 B 应该通过。当我删除对 chai.request() 的调用时,测试按预期通过。此外,当我将字符串传递给 chai.request() 时,第二个测试通过了。
另一个奇怪的事情是,当我使用调试运行这些测试时,我没有得到任何关于使用 chai.request() 调用的测试的进一步信息,即测试 A。当我使用调试运行测试 B 时,它通过了,但是当我运行时它通常会失败,但会运行两次,一次尝试通过,一次失败。通过尝试需要 4ms 失败尝试 <1ms。
我还尝试了很多我在 google/stackoverflow 上找到的东西,但我不记得了,因为我已经尝试让它工作了很长一段时间。不过,大多数这些事情一开始就是让它运行起来的。