如何在课堂上模拟私有方法?



在Nestjs中,我想嘲笑一个服务私有方法。开玩笑,使用spyOn方法,我无法访问私有方法。在这种情况下怎么办?

操作.服务.ts

private async _getOperationDocument(id): Promise<OperationDocument> {
return await this.operationDocumentService.findById(id);
}

操作.服务.规格.ts

jest
.spyOn(service, '_getOperationDocument')
.mockImplementation(async id => {
return OperationDocumentMock as OperationDocument;
});

多亏了@Andrei-Dragotoniu,我最终嘲笑了这项服务。

const module: TestingModule = await Test.createTestingModule({
providers: [{
provide: OperationDocumentService,
useValue: {
findById: () => OperationDocumentMock,
},
}]
});

私有方法已在另一个测试方法中调用。

我的两件事。

  1. 你有一个单行方法,它只是调用另一个方法。我会说你根本不需要这种方法,你正在添加无用的层,使代码复杂化,没有任何好处。

  2. 即使你最终保留了它,嘲笑它也没有意义。你不妨模拟它调用的方法。

只需这样做即可删除编译错误:

jest
.spyOn(service, <any>'_getOperationDocument')
.mockImplementation(async id => {
return OperationDocumentMock as OperationDocument;
});

最新更新