有一个React Ionic应用程序,我需要确定该应用程序是否在iOS设备上运行。我已经通过导入isPlatform完成了这一操作。
import { isPlatform } from "@ionic/core";
const isIOS = isPlatform("ios");
我尝试了以下方法,当isPlatform被调用时,它仍然返回false。
jest.mock("@ionic/core", () => ({
isPlatform: () => {
return true;
}
}));
如何在单元测试中使用jest模拟isPlatform,使其返回true?
想通了,我需要模拟离子/核心才能让它起作用。
jest.mock("@ionic/core");
import * as Ionic from '@ionic/core';
(Ionic as any).isPlatform = jest.fn(() => true);
2条答案
按热度按时间33qvvth11#
如果组件仅在@ionic/core中使用isFlatform,则可以模拟一个函数isFlatform:
但是当组件使用另一个函数并且您只想模拟isFlatform时,您可以用途:
0vvn1miw2#
与之前的响应类似,但使用了稍微更灵活的方法,以便能够根据我们希望在每个场景中测试的内容模拟结果。在我们的应用中,我们使用的是Angular,但这种方法应该也适用于React。
其思想是定义一个
mockIsPlatform()
函数:我们的服务有一些方法在后台使用
isPlatform()
方法:现在我们可以像这样测试这些方法: