簡體   English   中英

在React Native應用上使用Jest進行平台特定的測試

[英]Platform specific testing using Jest on a React Native app

這是react本機組件

//Test.js

export default class Test extends Component {
    render() {
        return(
            <View>
                </Animated.View> {
                  Platform.OS === 'android' &&
                  <TouchableNativeFeedback>
                    // some android specific code
                  </TouchableNativeFeedback>
                }</Animated.View>
            </View>
        )
    }
}

這是測試用例;

//testcases.js
import { Text, TouchableOpacity, Platform } from 'react-native';
import React from 'react';
import ReactDOM from 'react-dom';
import { shallow } from 'enzyme';
import Test from '../Test'

describe('Testing an App', () => {
    let snapshot;

    beforeAll(() => {
        snapshot = shallow(<Test />);
        Platform.OS = 'android';
    });
    it(' -- must return 1', () => {      
      expect(snapshot.find('TouchableNativeFeedback').length).toBe(1);
    });
});

預期收益為1; 接收值為0; 我已將Platform設置為“ android”,但沒有運氣。

我是移動自動化測試的新手。 因此,我可能會遺漏一些明顯的東西。 我應該使用react-dom進行渲染和進一步測試嗎?

我覺得這很明顯,但無法理解。

這是我的package.json

{
  "name": "exampleApp",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },
  "dependencies": {
    "react": "15.4.1",
    "react-native": "0.42.3"  
  },
  "devDependencies": {
    "babel-jest": "20.0.3",
    "babel-preset-react-native": "2.0.0",
    "jest": "20.0.4",
    "enzyme" : "2.8.0",
    "react-dom": "15.4.1",
    "react-addons-test-utils":"15.4.1",
    "react-test-renderer": "15.4.1"
  },
  "jest": {
    "preset": "react-native"    
  }
}

您不能在測試中直接更改平台。 您需要在設置中設置所需的平台。 查看此文檔以了解如何操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM