Как переопределитьProvider для nestjs / typeorm - PullRequest
0 голосов
/ 30 октября 2018

api.controller.ts

@Controller('api')
export class ApiController {
  constructor() {}

  @Post()
  @Transaction()
  async root(@Req() req: Request, @Res() res: Response, @TransactionManager() manager: EntityManager): Promise<void> {
    res.send(/* anything */);
  }
}

api.e2e-spec.ts

describe('API (e2e)', () => {
  let app: INestApplication;
  let connection: Connection;

  beforeAll(async () => {
    const module = await Test.createTestingModule({
      imports: [],
      controllers: [ApiController],
      providers: [],
    })
    .overrideProvider('Connection')
    .useValue(/** How to ??? */)
    .compile();
    app = module.createNestApplication();
    await app.init();
  });
});

Результат

[Nest] 35181   - 10/30/2018, 5:42:06 PM   [ExceptionHandler] 
Connection "default" was not found.
ConnectionNotFoundError: Connection "default" was not found.

В этом случае я просто хочу проверить параметры запроса и значения ответа, используя mock by test. Я хотел бы отключить соединение с БД, переопределив его.

1 Ответ

0 голосов
/ 17 мая 2019

Хорошо, если у вас есть какое-то фиктивное соединение (например, используйте jest.createMockInstance см. https://www.npmjs.com/package/jest-create-mock-instance):

api.e2e-spec.ts

describe('API (e2e)', () => {
  let app: INestApplication;
  let connection: Mocked<Connection>;

  beforeAll(async () => {
    connection = createMockInstance(Connection);
    const module = await Test.createTestingModule({
      imports: [],
      controllers: [ApiController],
      providers: [],
    })
    .overrideProvider(Connection)
    .useValue(connection)
    .compile();
    app = module.createNestApplication();
    await app.init();
  });
});
...