Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 多部分数据的端到端测试_Typescript_Loopback - Fatal编程技术网

Typescript 多部分数据的端到端测试

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

我在环回框架中使用了RESTAPI。在这里,我有一个POST方法,我接受一个有效负载和3个不同的文件。代码如下所示

@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',
    });
  });