Я пишу тест для API, который несколько раз вызывает вложенный API, чтобы получить пару значений ключа. Значение всегда будет boolean, и я пытаюсь издеваться над этой службой, также известной как KeyValueService, в коде ниже. Эти и другие логические значения используются в PhotoService, и я хотел бы смоделировать эти значения, чтобы я мог изменить тест, чтобы он соответствовал этим значениям.
Я издевался над логическими значениями, а также дважды пытался установить mockResolveValuetwice на true, думая, что это может применяться true для обеих переменных valueA и valueB, но это не сработало. Я буду использовать этот вложенный сервис несколько раз, а не только дважды. Пока ни одно из решений не сработало. Как я могу получить желаемое значение для каждой пары значений ключа? ТИА!
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? Это provider в вашем PhotosModule?
считайте это другим провайдером в PhotoService.





Хорошо, одна вещь, которая сработала для меня, заключалась в том, чтобы снова установить keyValueService.get в моем блоке test или it на jest.fn(), что помогло мне решить эту проблему.
keyValueService.get = jest.fn()...;
До использования того, что вы хотите. Либо mockImplementation, если необходимо, либо mockReturnValue и т. д. Я предполагаю, что он просто переназначает функцию get новому фиктивному значению для этого конкретного блока it/test.
Прежде всего, каковы типы переменных valueA и valueB?