我正在使用React 16.13.0并尝试使用笑话来测试是否调用了一个方法。我对如何使用模拟感到非常困惑。我有这种方法...
class Missions {
...
async removeVolunteerFromMission(missionId: string) {
const missions = this.repo();
const mission = await missions.findById(missionId);
mission.volunteerId = '';
mission.status = MissionStatus.unassigned;
return this.repo().update(mission);
}
...
export default new Missions();
如何测试我的“ findById”方法是否被调用?我有这种测试方法...
it('unassigns volunteer', async() => {
const missionId = "1234";
const mission = new Mission();
mission.missionId = missionId;
const mockFindById = jest.fn().mockResolvedValue(mission);
const mockUpdate = jest.fn().mockResolvedValue(mission);
const baseRepo = {
findById: () => mockFindById,
update: () => mockUpdate
};
jest.spyOn(missions, 'repo').mockReturnValue(baseRepo);
await missions.removeVolunteerFromMission(missionId);
console.log("mission === " + mission);
expect(mockFindById).toHaveBeenCalledTimes(1);
});
但这失败
expect(jest.fn()).toHaveBeenCalledTimes(expected)
Expected number of calls: 1
Received number of calls: 0
29 | console.log("mission === " + mission);
30 |
> 31 | expect(mockFindById).toHaveBeenCalledTimes(1)
| ^
我真的如何称呼它为真的?
答案 0 :(得分:0)
这里实际上并没有调用间谍/模拟,匿名函数是
const baseRepo = {
findById: () => mockFindById,
update: () => mockUpdate
};
但只需设置模拟功能即可
const baseRepo = {
findById: mockFindById,
update: mockUpdate
};