me_*_*jay 5 jestjs react-native react-native-testing-library
react-native-testing-library
我正在尝试使用Jest设置我的反应本机测试环境。我的反应本机应用程序使用react-native-encrypted-storage
. 当我运行第一个示例测试(下面的代码)时,它失败并提示RNEcryptedStorage
未定义。
import React from "react";
import "react-native";
// Note: test renderer must be required after react-native.
import renderer from "react-test-renderer";
import App from "../App";
it("renders correctly", () => {
console.log("Rendering");
renderer.create(<App />);
});
Run Code Online (Sandbox Code Playgroud)
完整错误:
RNEncryptedStorage 未定义
在对象。(node_modules/react-native-encrypted-storage/lib/commonjs/EncryptedStorage.ts:7:9) 在对象处。(node_modules/react-native-encrypted-storage/lib/commonjs/index.ts:1:1)
这是我第一次设置测试环境,所以不确定从哪里开始解决这个问题。
小智 7
上面的方法是可行的,但是如果你模拟react-native的其他方面,它可能会给其他模拟带来问题。如果您想单独模拟 RNEncryptedStorage,您可以尝试对上述解决方案进行细微的修改:
__mocks__/react-native-encrypted-storage/index.js
const RNEncryptedStorage = {
setItem: jest.fn(() => Promise.resolve()),
getItem: jest.fn(() => Promise.resolve('{ "foo": 1 }')),
removeItem: jest.fn(() => Promise.resolve()),
clear: jest.fn(() => Promise.resolve()),
};
export default RNEncryptedStorage;
Run Code Online (Sandbox Code Playgroud)
您可以RNEncryptedStorage
在测试期间通过react-native
向__mocks__
文件夹添加模拟来模拟本机模块。
// tests/__mocks__/react-native.js
module.exports = {
NativeModules: {
RNEncryptedStorage: {
setItem: jest.fn(() => Promise.resolve()),
getItem: jest.fn(() => Promise.resolve('{ "foo": 1 }')),
removeItem: jest.fn(() => Promise.resolve()),
clear: jest.fn(() => Promise.resolve())
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5376 次 |
最近记录: |