2016-11-01 5 views
3

Я тестирую реагировать неместных компоненты с шуткой, и я часто использую такие вещи, как это в моих стилях:Как установить платформу на тестовой основе для тестов на шутки?

import { StyleSheet, Platform } from 'react-native'; 

export default StyleSheet.create({ 
    container: { 
    paddingTop: Platform.OS === 'ios' ? 30 : 10, 
    } 
}); 

Проблема у меня в том, что в тестах шутя Platform.OS всегда 'ios', что означает, что ветвь андроида не проходит тестирование.

This позволяет мне думать, что я мог бы изменить это с помощью jest config, но поскольку я не хочу менять его глобально, но на основе теста это не имеет никакого смысла.

+0

Вы пытались использовать переменные среды? –

+1

Эта проблема больше связана с файлами с расширениями для платформы, чем с условными условиями платформы, но, возможно, вы могли бы прокомментировать там свою проблему: https://github.com/facebook/jest/issues/1370. – Tomty

+1

Кроме того, это отнюдь не очень изящное решение, но вы можете попробовать подход, упомянутый как часть https://github.com/facebook/jest/issues/1738. А именно, просто нужно «реагировать-native» и прямо назначать значение «Platform.OS» перед запуском теста. – Tomty

ответ

0

Попробуйте добавить это в начало тестового файла.

jest.mock('Platform',() => { 
    const Platform = require.requireActual('Platform'); 
    Platform.OS = 'android'; 
    return Platform; 
}); 
const Platform = require('Platform'); 

Вам может понадобиться сделать другой файл для прошивки, но когда платформа вы установили в макете будет работать для вашего файла тестовой спецификации.

 Смежные вопросы

  • Нет связанных вопросов^_^