Пытаюсь написать e2e-тест приложения на Nest (
https://nestjs.com/) - надстройка над ExpressJS.
Вот один из модулей:
import {Module} from '@nestjs/common';
import {DatabaseService} from './database.service';
import {config} from "../configuration";
import {SharedModule} from "../shared/shared.module";
const pgp = require('pg-promise')();
const db = pgp({
host: config.database.host,
...
});
const connectionProvider = { provide: 'DatabaseToken', useValue: db };
@Module({
components: [DatabaseService, connectionProvider],
exports: [DatabaseService],
imports: [SharedModule]
})
export class DatabaseModule {}
Вот так выглядит тест:
import * as express from 'express';
import * as request from 'supertest';
import { Test } from '@nestjs/testing';
import {AppModule} from "../src/app.module";
describe('Application', () => {
const server = express();
beforeAll(async () => {
const module = await Test.createTestingModule({
imports: [AppModule],
}).compile();
const app = module.createNestApplication(server);
await app.init();
});
it(`/GET area`, () => {
return request(server)
.get('/area')
.expect(200)
.expect({
data: {}
});
});
});
При запуске теста вылетает ошибка:
TypeError: Cannot read property 'host' of undefined
Пытался замокать импорт константы:
jest.mock('../configuration', () => ({
database: {
host: ''
},
}));
Но результат прежний. Либо я не правильно написал тест, либо ошибка в архитектуре.