代码之家  ›  专栏  ›  技术社区  ›  Developer

ReactJS:使用Jest测试文本返回空

  •  0
  • Developer  · 技术社区  · 6 年前

    我有这个反应成分

    import React from 'react';
    
    class template extends React.Component {
      render() {
        return (
          <div>
            <p>count: 0</p>
          </div>
        );
      }
    }
    
    export default template;
    

    import React from 'react'; // eslint-disable-line no-unused-vars
    import { shallow } from 'enzyme';
    
        import template from '../common/template';
    
        describe('template.js', () => {
          it('Renders template success ', () => {
            const wrapper = shallow(<template />);
            const text = wrapper.find('p').text();
            expect(wrapper.length).toEqual(1);
            expect(text).toEqual('count: 0');
          });
        });
    

    src/components/__tests__/template.js
      ● template.js › Renders template success
    
        Method “text” is meant to be run on 1 node. 0 found instead.
    
           6 |   it('Renders template success ', () => {
           7 |     const wrapper = shallow(<template />);
        >  8 |     const text = wrapper.find('p').text();
             |                                    ^
           9 |     expect(wrapper.length).toEqual(1);
          10 |     expect(text).toEqual('count: 0');
          11 |   });
    
          at ShallowWrapper.single (node_modules/enzyme/build/ShallowWrapper.js:1958:17)
          at ShallowWrapper.text (node_modules/enzyme/build/ShallowWrapper.js:1097:21)
          at Object.text (src/components/__tests__/template.js:8:36)
    

    包装器.text()为空。我做错了什么?

    使用此命令运行测试

    eslint src && react-scripts test --env=jsdom --coverage
    

    https://github.com/facebook/create-react-app

    "@types/jest": "^23.3.12",
    "enzyme": "^3.8.0",
    "enzyme-adapter-react-16": "^1.7.1",
    "react-scripts": "2.1.3",
    "react": "^16.7.0",
    

    更新:

    好像我的工作不尽如人意或者我遗漏了什么。。

    console.log('wrapper:::::', wrapper);
    console.log('wrapper.text:::::', wrapper.text());
    

    返回这些输出

    console.log('wrapper.text', wrapper.text());
       console.log src/components/__tests__/template.js:8
          wrapper::::: ShallowWrapper {}
        console.log src/components/__tests__/template.js:9
          wrapper.text:::::
    
    0 回复  |  直到 6 年前