gpt4 book ai didi

unit-testing - react native : Simulate offline device in Jest unit test

转载 作者:行者123 更新时间:2023-12-01 23:38:01 24 4
gpt4 key购买 nike

我正在编写一个 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;

我想在我的测试中测试它,看看如果设备已连接,它是否正确解析为 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)
})

关于unit-testing - react native : Simulate offline device in Jest unit test,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52633466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com