J. *_*ers 5 connection unit-testing jestjs react-native jest-fetch-mock
我正在编写一个 React Native 应用程序,我正在使用 Jest 对我的代码进行单元测试。
我写了一个函数,而不是检查是否有互联网连接。我知道想写它的单元测试。我被卡住了,因为我不知道如何在单元测试中模拟设备的连接状态。
您将如何在单元测试中模拟设备离线或在线?
编辑:
这是函数:
import { NetInfo } from "react-native";
import { NO_NETWORK_CONNECTION } from "../../../../config/constants/errors";
const checkNetwork = (): Promise<boolean | string> =>
new Promise((resolve, reject) => {
NetInfo.isConnected
.fetch()
.then(isConnected => (isConnected ? resolve(true) : reject(NO_NETWORK_CONNECTION)))
.catch(() => reject(NO_NETWORK_CONNECTION));
});
export default checkNetwork;
Run Code Online (Sandbox Code Playgroud)
我想在我的测试中测试它,看看它是否正确解析为 true 如果设备已连接并拒绝字符串,如果请求失败。为此,我需要在单元测试中模拟设备连接。
这很简单,只需模拟NetInfo如下:
import {
NetInfo
} from "react-native";
import checkNetwork from "...";
import {
NO_NETWORK_CONNECTION
} from "...";
jest.mock('react-native', () => ({
NetInfo: {
isConnected: {
fetch: jest.fn()
}
}
}))
test('test offline', async () => {
NetInfo.isConnected.fetch.mockResolvedValueOnce(false)
expect(await checkNetwork()).toBe(NO_NETWORK_CONNECTION)
})
test('test online', async () => {
NetInfo.isConnected.fetch.mockResolvedValueOnce(true)
expect(await checkNetwork()).toBe(true)
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2568 次 |
| 最近记录: |