【发布时间】:2020-11-04 14:10:12
【问题描述】:
我定义了一个特定于数据库的自定义 Module 以通过 Mongoose API 连接 MongoDB。
完整代码为here。
{
provide: DATABASE_CONNECTION,
useFactory: (dbConfig: ConfigType<typeof mongodbConfig>): Connection =>
createConnection(dbConfig.uri, {
useNewUrlParser: true,
useUnifiedTopology: true,
//see: https://mongoosejs.com/docs/deprecations.html#findandmodify
useFindAndModify: false
}),
inject: [mongodbConfig.KEY],
},
在为这个提供者编写测试时,我想确认数据库连接已定义并监视connect 方法以验证调用的参数。
我确实需要手动模拟功能,但是有an issue which is closed suddenly。
更新:我尝试使用来自ts-jest 的mocked,但它不起作用。
describe('DatabaseProviders(Connectoin)', () => {
let conn: any;
jest.mock('mongoose', () => {
return { createConnection: jest.fn() };
})
beforeEach(() => {
// provide a mock implementation for the mocked createConnection:
mocked(createConnection).mockImplementation((uri: any, options: any) => {
return {} as any
});
});
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [...databaseProviders],
}).compile();
conn = module.get<Connection>(DATABASE_CONNECTION);
});
afterEach(() => {
mocked(createConnection).mockClear();
});
it('DATABASE_CONNECTION should be defined', () => {
expect(conn).toBeDefined();
});
it('connect is called', () => {
expect(conn).toBeDefined();
expect(mocked(createConnection).mock.calls.length).toBe(1)
})
});
在运行应用程序时,它会报错:
TypeError: utils_1.mocked(...).mockImplementation is not a function
【问题讨论】:
-
嘿!你想清楚了吗?
-
@kuzzmi 是的,它在我的示例项目中工作,检查hantsy/nestjs-sample(100% 覆盖率)。