2016-11-01 20 views
3

私は冗談と反応し、ネイティブコンポーネントをテストしていると私は頻繁に私のスタイルでは、このようなものを使用します。jestテストのテストごとにプラットフォームを設定するにはどうすればよいですか?

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

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

私がいる問題は冗談テストPlatform.OSであることを意味し、常に'ios'であるということですアンドロイドブランチはテストされません。

This私は多分これを冗談構成で変更することができますが、私はそれをグローバルに変更したくないと思っていますが、テストごとにこれは意味がありません。

+0

可変環境を試しましたか? –

+1

この問題は、プラットフォーム固有の拡張子を持つファイルがプラットフォームの条件文よりも多くなっているようですが、おそらくあなたの問題でコメントできます:https://github.com/facebook/jest/issues/1370。 – Tomty

+1

また、これは決して非常に洗練されたソリューションではありませんが、https://github.com/facebook/jest/issues/1738の一部として述べられている方法を試してみるとよいでしょう。つまり、 'react-native'を要求し、テストを実行する前に直接' Platform.OS'に値を割り当ててください。 – Tomty

答えて

0

これをテストファイルの先頭に追加してください。

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

あなたがiOS用の別のファイルを作成する必要があるかもしれませんが、これは、あなたのテストのspecファイルのために働くモックに設定され、これまでのプラットフォーム。

関連する問題