我正在使用React 16.13.0。我有以下课程(Missions.ts)...
class Missions {
repo() : MissionRepository {
return getRepository(Mission) as MissionRepository;
}
async getAll() : Promise<Mission[]> {
return this.repo().find();
}
...
async removeVolunteerFromMission(missionId: string) {
const missions = this.repo();
const mission = await missions.findById(missionId);
mission.volunteerId = '';
mission.status = MissionStatus.unassigned;
return missions.update(mission);
}
...
}
export default new Missions();
我正在尝试为方法编写一些单元测试,但在弄清楚如何实例化我的类时遇到了麻烦。我已经尝试了以下...
import React from "react";
import { CustomRepository, getRepository } from 'fireorm';
import { BaseRepository } from './BaseRepository'
import { Mission } from './schema';
import { Missions } from './Missions';
describe('Missions', () => {
describe('#removeVolunteerFromMission', () => {
const missionId = "1234";
const mission = new Mission();
beforeEach(() => {
const mockFindById = jest.fn();
BaseRepository.prototype.findById = mockFindById;
mockFindById.mockReturnValue(Promise.resolve(mission));
const mockUpdate = jest.fn();
BaseRepository.prototype.update = mockUpdate;
mockUpdate.mockReturnValue(Promise.resolve(mission));
});
it('unassigns volunteer', () => {
const obj = new Missions();
obj.removeVolunteerFromMission(missionId)
expect(mockFindById).toHaveBeenCalledTimes(1);
expect(mockUpdate).toHaveBeenCalledTimes(1);
expect(mission.volunteer).toBe(null);
});
});
});
但是使用“ hpm测试”运行测试时,出现此错误
TypeError: _Missions.Missions is not a constructor
在线
const obj = new Missions()
如何在测试中实例化我的课程?
问题是您正在导出Missions
类的实例,而不是类本身,并且您无法再次实例化实例。因此,仅导出类,然后在要使用它的地方实例化它。
export default Missions;
在您想使用的地方实例化:
const missions = new Missions();
也导入了默认的导出而没有大括号,所以这样做:
import Missions from './Missions';