我希望能够针对实际数据库测试我的 Nest 服务。我知道大多数单元测试应该使用模拟对象,但有时也可以对数据库本身进行测试。
我已经搜索了 SO 和 Nest 的 GH 问题,并且开始达到所有答案的传递闭包。:-)
我正在尝试从https://github.com/nestjs/nest/issues/363#issuecomment-360105413工作。以下是我的单元测试,它使用自定义提供程序将存储库传递给我的服务类。
describe("DepartmentService", () => {
const token = getRepositoryToken(Department);
let service: DepartmentService;
let repo: Repository<Department>;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [
DepartmentService,
{
provide: token,
useClass: Repository
}
]
}).compile();
service = module.get<DepartmentService>(DepartmentService);
repo = module.get(token);
});
Run Code Online (Sandbox Code Playgroud)
一切都正确编译,TypeScript 似乎很高兴。但是,当我尝试执行create或save在我的 Repository实例上执行时,底层Repository似乎未定义。这是堆栈回溯:
TypeError: Cannot read property 'create' of undefined
at Repository.Object.<anonymous>.Repository.create (repository/Repository.ts:99:29)
at DepartmentService.<anonymous> (relational/department/department.service.ts:46:53)
at …Run Code Online (Sandbox Code Playgroud) 测试 Apollo GraphQL 服务器的标准方法是使用Apollo 测试客户端。该createTestClient方法需要一个server参数。GraphQLModule在 NestJS/TypeGraphQL 应用程序中,访问(Jest)测试内部创建的 Apollo 服务器的适当方法是什么?