我有一组3个测试,第一个具有基本的模拟实现:
Team.query = jest.fn(() => ({
findOne: () => {
return {
is_disabled: false,
};
},
}));
在第二项测试中,我使用上述方法执行了Team.query.mockImplementationOnce
,但是我将is_disabled
更改为true
。
在第三个测试中,我想将其还原到上面的jest.fn
实现中。这可能吗?
答案 0 :(得分:0)
你很好,不需要额外的工作。
由于Team.query
是模拟函数,因此在被mockImplementationOnce
覆盖后,它将在一次调用后自动恢复为先前模拟的实现:
const Team = { };
Team.query = jest.fn(() => ({
findOne: () => {
return {
is_disabled: false,
};
},
}));
test('Team.query', () => {
expect(Team.query().findOne().is_disabled).toBe(false); // Success!
Team.query.mockImplementationOnce(() => ({ findOne: () => ({ is_disabled: true }) }));
expect(Team.query().findOne().is_disabled).toBe(true); // Success!
expect(Team.query().findOne().is_disabled).toBe(false); // Success!
Team.query.mockImplementationOnce(() => ({ findOne: () => ({ is_disabled: 'some text' }) }));
expect(Team.query().findOne().is_disabled).toBe('some text'); // Success!
expect(Team.query().findOne().is_disabled).toBe(false); // Success!
});