我正在为一个API编写一个测试,该API多次调用嵌套API以获取键值对。值将始终为boolean
,我尝试在下面的代码中模拟此服务aka 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);
});
1条答案
按热度按时间rqqzpn5f1#
好的,对我有效的一件事是在我的
test
或it
块中再次将keyValueService.get
设置为jest.fn()
,这对我解决这个问题很有效。使用你想要的。如果需要的话,可以是
mockImplementation
,也可以是mockReturnValue
等等。我的猜测是,它只是为特定的it/test
块重新分配了get
函数到一个新的模拟值。