使用 jest 模拟外部库调用

tv1*_*902 5 javascript unit-testing reactjs jestjs ts-jest

玩笑和反应代码测试的新手。我正在测试一个文件,该文件从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>;
Run Code Online (Sandbox Code Playgroud)

我在使用笑话测试此代码时遇到困难。我尝试了多种方法来测试相同的结果,但由于多个错误而失败。

有些方法,以同样的方式导入base64并像这样模拟。 base64.decode = jest.fn(()=> "testParsedValue");

尝试模拟整个库本身,const mockedLib = jest.mock("react-native-base64", () => jest.fn());然后模拟该变量的 base64,但似乎没有任何效果。

任何帮助,将不胜感激!谢谢!

Ben*_*ith 6

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

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