代码之家  ›  专栏  ›  技术社区  ›  opensas

用jest和supertest测试responsebody

  •  0
  • opensas  · 技术社区  · 6 年前

    我有一个简单的快速http服务器,在发出get to时返回“hello worl”/

    我有以下测试:

    import request from 'supertest';
    import app from '../app/app';
    
    test('test http server', async () => {
      const res = await request(app).get('/')
      expect(res.body).toEqual('Hello world');
    });
    

    测试失败如下:

    ● test http server
    expect(received).toEqual(expected)
    Expected: "Hello world"
    Received: {}
       7 |   const res = await request(app).get('/')
       8 | 
    >  9 |   expect(res.body).toEqual('Hello world');
    

    如何将response.body作为文本进行检查?

    0 回复  |  直到 6 年前
        1
  •  0
  •   opensas    6 年前

    似乎只返回您使用过的文本(没有json) res.text ,像这样:

    test('test http server', async () => {
      const res: request.Response = await request(app).get('/')
    
      expect(res.type).toEqual('text/html');
      expect(res.text).toEqual('Hello world');
    });
    

    另一方面,在测试返回json的端点时,我可以这样做:

    test('test valid_cuit with a valid case', async () => {
      const cuit: string = '20-24963205-9'
      const res: request.Response = await request(app).get(`/api/valid_cuit/${ cuit }`)
    
      expect(res.type).toEqual('application/json')
      expect(res.body.cuit).toEqual(cuit)
      expect(res.body.isValid).toBe(true)
    });
    
    推荐文章