使用玩笑模拟外部库调用

Mock external library call using jest

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,像这样mock。 base64.decode = jest.fn(()=> "testParsedValue");

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

如有任何帮助,我们将不胜感激!谢谢!

尝试使用 Jest module factory 来模拟它,例如

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