以下是对代码 `const React = require('react'); const ReactNative = require('react-native'); const { TouchableNativeFeedback, View } = ReactNative;

const Button = (props) => { return ( <TouchableNativeFeedback delayPressIn={0} background={TouchableNativeFeedback.SelectableBackground()} // eslint-disable-line new-cap {...props}> {props.children} ); };

module.exports = Button;` 的 Jest 单元测试代码:

const React = require('react');
const ReactNative = require('react-native');
const { TouchableNativeFeedback } = ReactNative;

// 导入要测试的组件
const Button = require('../Button');

// 创建一个测试套件
describe('Button Component', () => {
  // 创建一个测试用例
  it('renders correctly', () => {
    // 渲染Button组件
    const wrapper = shallow(<Button>Hello Jest</Button>);
    
    // 断言Button组件渲染的结果是否符合预期
    expect(wrapper).toMatchSnapshot();
  });

  // 创建另一个测试用例
  it('calls onPress prop when pressed', () => {
    // 创建一个mock函数作为onPress prop
    const onPressMock = jest.fn();
    
    // 渲染Button组件,并传入onPress prop
    const wrapper = shallow(<Button onPress={onPressMock}>Press Me</Button>);
    
    // 模拟点击事件
    wrapper.find(TouchableNativeFeedback).simulate('press');
    
    // 断言onPress prop是否被调用
    expect(onPressMock).toHaveBeenCalled();
  });
});

需要注意的是,上述代码中使用了shallow函数来渲染Button组件。shallow函数是Enzyme库提供的一个浅渲染函数,它只会渲染Button组件本身,而不会渲染它的子组件。这样可以更加高效地进行单元测试。如果需要测试Button组件的子组件,可以使用mount函数来进行深渲染。


原文地址: https://www.cveoy.top/t/topic/fxZR 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录