J T*_*J T 33 unit-testing jestjs react-native
在React Native中我fetch用来执行网络请求,但fetch不是一个明确需要的模块,因此在Jest中模拟似乎是不可能的.
即使尝试调用fetch在测试中使用的方法也会导致:
ReferenceError:未定义fetch
有没有办法在Jest的原生反应中测试这样的API请求?
Ale*_*eev 28
在你的测试用例中,你可以使用Jest的模拟来模拟你想要的任何函数:
fetch = jest.fn(() => Promise.resolve());
Run Code Online (Sandbox Code Playgroud)
此方法仅适用于基于承诺的测试用例(请参阅pitJest文档).
就fetch异步函数而言,您需要使用所有测试运行pit(在此处阅读有关异步测试的更多信息).
jhm*_*jhm 10
模拟全局fetch对象的另一种方法:
const mockSuccesfulResponse = (
status = 200,
method = RequestType.GET,
returnBody?: object
) => {
global.fetch = jest.fn().mockImplementationOnce(() => {
return new Promise((resolve, reject) => {
resolve({
ok: true,
status,
json: () => {
return returnBody ? returnBody : {};
},
});
});
});
};
Run Code Online (Sandbox Code Playgroud)
上面的帮助方法可以任何你想要的方式修改:-)希望它可以帮助某人
您可以使用jest-fetch-mock npm包覆盖全局提取对象,而不是滚动自己的mock .该软件包允许您设置虚假响应并验证发送的请求.请参阅该链接以获取大量用法示例.
| 归档时间: |
|
| 查看次数: |
24969 次 |
| 最近记录: |