Javascript 使用Jest和酶测试简单的反应成分-我做错了什么?

Javascript 使用Jest和酶测试简单的反应成分-我做错了什么?,javascript,reactjs,unit-testing,enzyme,jestjs,Javascript,Reactjs,Unit Testing,Enzyme,Jestjs,我是“单元测试”新手。我做错什么了?如何测试如此简单的组件 test.js import React from 'react'; import { shallow } from 'enzyme'; import StartButton from './'; describe('StartButton', () => { const wrapper = shallow(<StartButton />); it('renders correctly', () =>

我是“单元测试”新手。我做错什么了?如何测试如此简单的组件

test.js

import React from 'react';
import { shallow } from 'enzyme';
import StartButton from './';

describe('StartButton', () => {
  const wrapper = shallow(<StartButton />);

  it('renders correctly', () => {
    expect(wrapper).toMatchSnapshot();
  });

  it('renders correctly', () => {
    expect(wrapper.find('.StartButton-container')).to.have.length(1);
  });
});
错误

失败src\components\StartButton\test.js● 开始按钮›渲染 正确地

TypeError: Cannot read property 'have' of undefined

  at Object.it (src/components/StartButton/test.js:13:54)
      at new Promise (<anonymous>)
  at Promise.resolve.then.el (node_modules/p-map/index.js:46:16)
      at <anonymous>
  at process._tickCallback (internal/process/next_tick.js:188:7)
TypeError:无法读取未定义的属性“have”
在Object.it(src/components/StartButton/test.js:13:54)
在新的承诺()
在Promise.resolve.then.el(node_modules/p-map/index.js:46:16)
在
在进程中。_tick回调(内部/process/next_tick.js:188:7)
通过src\components\App\test.js

测试套件:1个失败,1个通过,共2个测试:1个失败,2个 已通过,共3个快照:2个已通过,2个总时间:0.181s, 估计1s运行了与更改文件相关的所有测试套件

手表用法:按w键可显示更多信息


我认为Jest没有内置matcher语法。您必须这样做:

expect(wrapper.find('.StartButton container').length).toBe(1)


通过将要检查的值放入
expect()

中,您需要使用
chai

$ npm install chai
test.js

import React from 'react';
import { expect } from 'chai';
import StartButton from './StartButton'

describe('<Foo />', () => {
  it('renders correctly', () => {
    expect(wrapper.find('.StartButton-container')).to.have.length(1);
  });

});
从“React”导入React;
从“chai”导入{expect};
从“./StartButton”导入StartButton
描述(“”,()=>{
它('正确渲染',()=>{
expect(wrapper.find('.StartButton容器')).to.have.length(1);
});
});
import React from 'react';
import { expect } from 'chai';
import StartButton from './StartButton'

describe('<Foo />', () => {
  it('renders correctly', () => {
    expect(wrapper.find('.StartButton-container')).to.have.length(1);
  });

});