【发布时间】:2021-05-05 15:28:14
【问题描述】:
我正在尝试学习如何对特定任务进行单元测试。以下是我的一些文件:
//examples.service.ts
export class ExamplesService {
constructor(
@InjectModel(Example.name) private ExampleModel: Model<Example>,
private readonly someService: SomeService,
private readonly someOtherService: SomeOtherService
){}
async findAll(): Promise<Example[]> {
return this.exampleModel.find().exec();
}
//... other class methods
}
//examples.controller.ts
@Controller('examples')
export class ExamplesController {
constructor(private readonly examplesService: ExamplesService) {}
@Get()
async findAll(): Promise<Example[]> {
return this.examplesService.findAll();
}
//...
如果需要我创建一个还需要 SomeService 和 SomeOtherService 参数的新 ExamplesService 对象,我该如何测试 examples.service.ts 中的功能?我是否创建了所有这些对象的模拟?如果有,怎么做?
这是我目前所拥有的:
//examples.controller.spec.ts
jest.mock('./examples.service');
describe(ExamplesController, ()=> {
let examplesController: ExamplesController;
let examplesService: ExamplesService;
beforeEach(async () => {
const module = TestingModule = await Test.createTestingModule({
controllers: [ExamplesController],
providers: [ExamplesService],
}).compile();
examplesController = module.get<ExamplesController>(ExamplesController)
examplesService = module.get<ExamplesService>(ExamplesService)
})
describe('findAll', () => {
it('should return all the examples', async () => {
let examples = await examplesService.findAll();
expect(examples).resolves.toEqual('some result');
})
});
})
但是,在测试 findAll 时,它是不成功的,因为 examples 总是等于 undefined。
谢谢!
【问题讨论】:
标签: typescript jestjs