【发布时间】:2022-12-10 03:41:18
【问题描述】:
我正在为一个多次调用嵌套 api 以获取键值对的 API 编写测试。该值将始终为 boolean,我试图在下面的代码中模拟此服务,又名 KeyValueService。 PhotoService 中使用了这些和其他更多布尔值,我想模拟这些值,以便我可以更改测试以匹配这些值。
我嘲笑了布尔值,还尝试将 mockResolveValuetwice 设置为 true 两次,认为它可以将 true 应用于变量 valueA 和 valueB,但它没有用。我将多次使用此嵌套服务,而不仅仅是两次。到目前为止,没有任何解决方案奏效。如何为每个键值对获得所需的值? TIA!
jest.mock('../../service/keyValue.service', () => ({
valueA: false,
valueB: false
}));
describe('PhotosService', () => {
let service: PhotosService;
let keyValueService: KeyValueService;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [PhotosService],
}).compile();
service = module.get<PhotosService>(PhotosService);
keyValueService.get.mockResolveValue(() => true);
});
it('should be defined', () => {
expect(service).toBeDefined();
valueA.mockResolveValue(() => true);
});
});
但价值观不会改变。我还尝试了以下,
it('should be defined', () => {
keyValueService.get.mockResolveValue(true);
keyValueService.get.mockResolveValue(true);
expect(service).toBeDefined();
valueA.mockResolveValue(() => true);
});
【问题讨论】:
-
首先,值和值变量的类型是什么?
-
它的类型
boolean -
您的 PhotosService 如何使用您的 KeyValueService?它是您的 PhotosModule 中的
provider吗? -
将其视为
PhotoService中的另一个提供商。
标签: jestjs mocking nestjs ts-jest jest-mock-extended