使用jest模拟外部库调用

mtb9vblg  于 2023-03-11  发布在  Jest
关注(0)|答案(1)|浏览(170)

jest和react代码测试新手。我正在测试一个从react-native-base64导入base64的文件,并在useEffect中解码从后端系统获取的值。下面是示例代码。

import base64 from "react-native-base64";
 
  const xyzWork = async () => {
    const value = await - fetch data from backend
    const decodedValue = base64.decode(value);
    ...
    ...
    ...
  }

  useEffect(() => {
    xyzWork();
  }, []);

  return <div><SomeComponent /></div>;

我在使用jest测试这段代码时遇到了困难。我尝试了多种方法来测试相同的代码,但它失败了,出现了多个错误。
一些方法,导入base64相同的方式和模拟像这样。base64.decode = jest.fn(()=> "testParsedValue");
尝试模拟整个库本身,如const mockedLib = jest.mock("react-native-base64", () => jest.fn());,然后模拟该变量的base64,但似乎没有任何效果。
任何帮助都将不胜感激!谢谢!

zxlwwiss

zxlwwiss1#

您可以使用Jest模块工厂模拟它,例如:

jest.mock('react-native-base64', () => ({
    decode: () => "testParsedValue"
}));

相关问题