import React, { Component } from 'react';
import { StyleSheet, View, Text } from 'react-native';
export default class Home extends Component {
render() {
return (
<View style={styles.wrapper}>
<Text style={styles.text}>{this.props.data}</Text>
</View>
)
}
}
Home.defaultProps = {
data: 'Default',
};
const styles = StyleSheet.create({
wrapper: {
flex:1,
justifyContent: 'center'
},
text: {
fontSize: 48,
},
})
ps. Home.defaultProps... 為預設此Home (Componen) 內的props
import React, { Component } from 'react';
import Home from './app/Home';
type Props = {};
export default class App extends Component<Props> {
render() {
return (
<Home />
);
}
}
$ npm i --save-dev enzyme enzyme-adapter-react-16 react-dom
$ yarn
需要react-dom的原因是:
enzyme-adapter-react-16 has peer dependencies on react, react-dom, and react-test-renderer, ,而 react 和 react-test-renderer 本身就有載入了
1) 先打印出wrapper,再找我們要的 props
執行後可以看到如下圖的紅框內, children 值為 Default,是因為現在的 test case 透過shallow時,並沒有傳入data,所以會顯示在 Home.js 內預設的 data
import 'react-native';
import React from 'react';
import { configure, shallow } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import Home from '../app/Home';
configure({ adapter: new Adapter() });
it('Testing props', ()=>{
const wrapper = shallow(<Home />).props();
console.log(wrapper);
})
import 'react-native';
import React from 'react';
import { configure, shallow } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import Home from '../app/Home';
configure({ adapter: new Adapter() });
it('Testing props', ()=>{
const wrapper = shallow(<Home data='this is testing..' />).props();
console.log(wrapper);
})
import 'react-native';
import React from 'react';
import { configure, shallow } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import Home from '../app/Home';
configure({ adapter: new Adapter() });
it('Testing props', ()=>{
const wrapper = shallow(<Home data='this is testing..' />).props();
// console.log(wrapper);
expect(wrapper.children.props.children).toEqual('this is testing..');
})