gpt4 book ai didi

node.js - 使用 node.js supertest 对 multipart/form-data 进行 POST

转载 作者:行者123 更新时间:2023-11-28 21:36:16 33 4
gpt4 key购买 nike

我试图使用 Node.js super 测试来测试一些 REST API。

request(app)
.post("/products")
.set(
"Authorization",
"Bearer my jwt token here"
)
.set("Content-Type", "multipart/form-data")
.field("name", "Tomato")
.field("userId", "5d921d306e96d70a28989127")
.attach(
"productImage",
"D:/NodeJS/node-rest-shop/uploads/1558612339690managing-redis.jpg"
)
.expect(201)
.then(res => {
const body = res.body;
expect(body).to.contain.property("message");
expect(body).to.contain.property("productId");
expect(body).to.contain.property("date");
expect(body).to.contain.property("user");
expect(body).to.contain.property("request");
done();
})
.catch(err => done(err));

.field("userId", userId)

有没有什么方法可以在不设置硬编码字符串值的情况下将 userId 的值设置为变量?它是一个 MongoDB 对象 ID。

当我将值用作变量时,发生了这个错误。

TypeError: source.on is not a function
at Function.DelayedStream.create (node_modules\delayed-stream\lib\delayed_stream.js:33:10)
at FormData.CombinedStream.append (node_modules\combined-stream\lib\combined_stream.js:45:37)
at FormData.append (node_modules\form-data\lib\form_data.js:74:3)
at Test.RequestBase.field (node_modules\superagent\lib\request-base.js:406:23)
at Context.done (test\api\product\product.js:77:8)

最佳答案

我可以将其解释为 2 种不同的方式,所以我将同时回答这两种方式:

Can the value be specified as a non-string, e.g. a number.

multipart/form-data 实际上没有任何类型的输入。通常,一切都会被解释为字符串。您的 Controller 将需要进行任何转换。

Can I use a variable in place of a hardcoded string.

是的,你可以。

代替:

.field("userId", "5d921d306e96d70a28989127")

你可以只使用:

.field("userId", userId)

只要你之前定义了一个userId变量

关于node.js - 使用 node.js supertest 对 multipart/form-data 进行 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58466873/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com