React Native: имитация автономного устройства в модульном тесте Jest - PullRequest
0 голосов
/ 03 октября 2018

Я пишу приложение 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;

И я хотел бы проверить ее в своем тесте, чтобы увидеть, правильно ли она разрешается с истиннымесли устройство подключено и отклоняется со строкой, если запрос не выполняется.Для этого мне нужно смоделировать соединение устройств в моих модульных тестах.

1 Ответ

0 голосов
/ 04 октября 2018

Это довольно просто, просто издевайтесь над 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)
})
...