2016-11-01 3 views
3

Ich teste reagieren-native Komponenten mit Scherz und ich oft Dinge wie dies in meinem Stil:Wie wird die Plattform für Testtests pro Test eingestellt?

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

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

Das Problem, das ich habe, ist, dass in dem Scherz Tests Platform.OS immer 'ios' ist die, dass die Mittel Android-Zweig wird nicht getestet.

This lässt mich denken, dass ich das vielleicht durch eine jest config ändern könnte, aber da ich es nicht global ändern möchte, aber auf einer Testbasis macht das sowieso keinen Sinn.

+0

Haben Sie versucht, variable Umgebungen zu verwenden? –

+1

Dieses Problem scheint eher auf Dateien mit plattformspezifischen Erweiterungen als auf Plattformkonditionen zu beruhen, aber vielleicht könnten Sie dort Ihr Problem mit https://github.com/facebook/jest/issues/1370 kommentieren. – Tomty

+1

Auch dies ist keineswegs eine sehr elegante Lösung, aber Sie könnten versuchen, den Ansatz, der als Teil von https://github.com/facebook/jest/issues/1738 erwähnt wird, zu versuchen. Nennen Sie "reactive-native" und weisen Sie vor dem Ausführen des Tests "Platform.OS" direkt einen Wert zu. – Tomty

Antwort

0

Versuchen Sie, dies oben in der Testdatei hinzuzufügen.

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

Sie könnten eine andere Datei für iOS machen müssen, aber die jemals Plattform, die Sie in der Mock-Set wird für den Test-Spez-Datei arbeiten.

Verwandte Themen