我正在尝试使用 jest 进行一些单元测试以进行测试,我在名为 generator 的单独文件中有两个函数,我在其中创建了假数据:
generator.ts
any
当我尝试用这样的玩笑创建单元测试时:
export async function generateReportData(overide = {}) {
return {
clientId: faker.datatype.number(),
incidentDesc: faker.lorem.sentence(15),
city: faker.address.city(),
country: faker.address.country(),
createdAt: new Date(),
...overide,
};
}
export async function generateReportsData(n: number = 1, overide = {}) {
return Array.from(
{
length: n,
},
(_, i) => {
return generateReportData({ id: i, ...overide });
}
);
}
我收到此错误:
<块引用>'Promise<{ clientId: number; 类型的参数事件描述:字符串; 城市:字符串;国家:字符串; createdAt:日期; }>[]' 不是 可分配给类型为 'Report[] | 的参数承诺<报告[]>'。
这是我的存储库:
test("should return report list", async () => {
const reportsData = generateReportsData(4);
const spy = jest
.spyOn(ReportRepository, "getReports")
.mockResolvedValueOnce(reportsData);
const controller = new ReportController();
const reports = await controller.getReports();
expect(reports).toEqual(reportsData);
expect(spy).toHaveBeenCalledWith();
expect(spy).toHaveBeenCalledTimes(1);
});
答案 0 :(得分:1)
问题很可能是你没有输入 generateReportData
函数的返回值,所以 typescript 不知道类型实际上是 Report
(还有,为什么它是异步的?) .只需添加类型,你应该没问题:
export function generateReportData(overide = {}): Report