Typescript 多部分数据的端到端测试
我在环回框架中使用了RESTAPI。在这里,我有一个POST方法,我接受一个有效负载和3个不同的文件。代码如下所示Typescript 多部分数据的端到端测试,typescript,loopback,Typescript,Loopback,我在环回框架中使用了RESTAPI。在这里,我有一个POST方法,我接受一个有效负载和3个不同的文件。代码如下所示 @post("/v1/api/order", { responses: { 200: { content: { "application/json": { schema: { "x-ts-type": Order } }, "multipart/mixed": { "x-parser
@post("/v1/api/order", {
responses: {
200: {
content: {
"application/json": { schema: { "x-ts-type": Order } },
"multipart/mixed": {
"x-parser": "stream",
schema: { type: "object" }
}
},
description: "Order model instance"
}
}
})
public async createOrder(
@requestBody({
content: {
"multipart/form-data": {
"x-parser": "stream",
schema: { type: "object" }
}
},
description: "multipart/form-data value.",
required: true
})
request: Request,
@inject(RestBindings.Http.RESPONSE) response: Response): Promise<any> {
this.logger.info(`createOrder`, { userId: "loggedOn User", method: "createOrder" });
const fileUpload = new FileUploader();
const aHelper = new AttachmentHelper();
const results: any = await fileUpload
.multerFileUpload(request, response)
.then((result: any) => {
return {
attachmentDetails: aHelper.attachmentInformation(result),
orderDetails: _.get(result.fields, "payload")
};
})
.catch((err: Error) => {
response.status(400);
this.logger.error("createOrder", err.stack, "error occured while create order");
throw err;
});
我希望在数据库中插入状态代码为200的数据。
实际结果:400个错误请求
我正在编写端到端测试,但无法使用send方法发送有效负载。我正在使用testlab
LoopBack的testlab
模块暴露在引擎盖下,用作HTTP客户端库
要发送上传文件的多部分请求,应使用中所述的attach
方法
另请参见LoopBack如何在内部测试文件上载,例如:
非常感谢。我将尝试这个。我尝试了这个,但得到以下错误:预期200“OK”,得到500“Internal Server error”,我可以确认,这个解决方案正在工作。谢谢@M.R
it.only('Insert the order', async () => {
const neworder = givenNewOrderPayload();
console.log("New Order Payload.", neworder);
await client.post(`/v1/api/order`)
.set('Content-Type', 'multipart/form-data')
.set(neworder)
.expect(200)
}
function givenNewOrderPayload() {
let userInput = a;
return {'payload': userInput}
}
it('supports file uploads', async () => {
const FIXTURES = path.resolve(__dirname, '../../../../fixtures');
const res = await client
.post('/show-body')
.field('user', 'john')
.field('email', 'john@example.com')
.attach('testFile', path.resolve(FIXTURES, 'file-upload-test.txt'), {
filename: 'file-upload-test.txt',
contentType: 'multipart/form-data',
})
.expect(200);
expect(res.body.files[0]).containEql({
fieldname: 'testFile',
originalname: 'file-upload-test.txt',
mimetype: 'multipart/form-data',
});
});