簡體   English   中英

Nestjs e2e 測試使用 getHttpServer 失敗,但使用.agent

[英]Nestjs e2e test fails with getHttpServer but works with .agent

我試圖使用以下代碼在nestjs中編寫我的第一個e2e測試:

describe('AppController (e2e)', () => {
  let app: INestApplication;

  beforeAll(async () => {
    const moduleFixture: TestingModule = await Test.createTestingModule({
      imports: [
        AppModule,
      ]    
    }).compile();

    app = moduleFixture.createNestApplication();
    await app.init();
    await getConnection().synchronize(true);
  });

  it('/ (GET)', async () => {
    return request(app.getHttpServer())
      .get('/')
      .expect(200);
  });

  afterAll(async () => {
    await app.close();
  });
});

在嘗試調試我看到的超測試請求時,它總是以 404 失敗:

{
   errno: -61,
   code: 'ECONNREFUSED',
   syscall: 'connect',
   address: '127.0.0.1',
   port: 57523,
   response: undefined
 }

如果我嘗試使用.agent('127.0.0.1:3000')連接到實際應用程序,則測試通過。

  it('/ (GET)', async () => {
    return request
     .agent('127.0.0.1:3000')
     .get('/')
     .expect(200)
  });

你必須等待回應。 做類似的事情。 看看下面的片段,我在其中添加了等待響應而不是返回

  it('should throw validation error when creating employer policy', async () => {
const data = {
  max_percent_of_salary: true,
  is_employer_paid: true,
  has_advance_activated: false,
};

const response = await request(app.getHttpServer())
  .post('/sa-employer-policy/create/')
  .set('Accept', 'application/json')
  .set('Authorization', 'Bearer ' + employer_token)
  .send(data)
  .expect(HttpStatus.BAD_REQUEST);

expect(response.body.message).toBeDefined();

});

問題是我使用的是 controller 的端點而沒有導入父模塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM