我正在使用jest模拟扩展,并且我试图在一个被模仿的类接口上模拟一个公共函数。
这是我的IApiService
export default interface IApiService {
send: (url: string) => Promise<any>;
}我对homeService类的测试,它只有一个叫做start的公共函数。
import { mock } from "jest-mock-extended";
import HomeService from "./homeService";
import IApiService from "../Api/interface";
describe("HomeService", () => {
let apiService: IApiService;
let service: HomeService;
beforeEach(() => {
apiService = mock<IApiService>();
service = new HomeService(apiService);
});
it("Should shit all over the place", () => {
const mock_fetch = jest.fn(() => Promise.resolve("response"));
apiService.send.mockReturnValue(mock_fetch);
service.start();
expect(mock_fetch).toBeCalled();
});
});我试图让发送方法返回一个模拟的值,但是模拟上的任何函数似乎都不像我试图调用的那样工作。
发布于 2020-11-08 20:01:55
由于Jest间谍API是在模拟对象上使用的,因此应该按照文献资料中的建议正确地键入
let apiService: MockProxy<IApiService>;这将方法类型与Jest间谍类型合并,send类型类似于:
((url: string) => Promise<any>) & jest.SpyInstance<Promise<any>>预期模拟函数将返回承诺,而不是返回承诺的函数,因此应将其模拟为:
apiService.send.mockReturnValue(Promise.resolve("response"))或
apiService.send.mockResolvedValue("response")https://stackoverflow.com/questions/64735526
复制相似问题