酶:方法"text"仅用于在单个节点上运行.0找到了

Sta*_*erd 10 reactjs jestjs enzyme

我正在使用React v15.4,babel-jest v18和酶v2.5.1

我有一个简单的React组件:

import React, {Component} from 'react'
import {FormattedRelative} from 'react-intl'
import pageWithIntl from '../components/PageWithIntl'
import Layout from '../components/Layout'

class About extends Component {
  static async getInitialProps ({req}) {
    return {someDate: Date.now()}
  }

  render () {
    return (
      <Layout>
        <h1>About</h1>
        <p>
          <FormattedRelative
            value={this.props.someDate}
            updateInterval={1000}
          />
        </p>
      </Layout>
    )
  }
}

export default pageWithIntl(About)
Run Code Online (Sandbox Code Playgroud)

一个简单的Jest/Enzyme测试:

/* global it, expect, describe */

import React from 'react'
import { shallow } from 'enzyme'
import renderer from 'react-test-renderer'
import About from '../pages/about.js'

describe('With Enzyme', () => {
  it('App shows "About"', () => {
    const about = shallow(
      <About />
    )
    expect(about.find('h1').text()).toEqual('About')
  })
})
Run Code Online (Sandbox Code Playgroud)

Jest测试应该通过,但我收到一个错误:

方法"text"仅用于在单个节点上运行.0找到了.

我错过了什么?

===更新

快照测试通过:

describe('With Snapshot Testing', () => {
  it('About shows "About"', () => {
    const component = renderer.create(<About />)
    const tree = component.toJSON()
    expect(tree).toMatchSnapshot()
  })
})
Run Code Online (Sandbox Code Playgroud)

有没有办法在快照测试中整合酶期望测试?如何?

And*_*rle 10

它的原因是浅层不会渲染子组件并且您的组件被函数包裹.如此浅只返回函数的表示而不是组件的表示.您可以使用它dive()来访问真实组件

/* global it, expect, describe */

import React from 'react'
import { shallow } from 'enzyme'
import renderer from 'react-test-renderer'
import About from '../pages/about.js'

describe('With Enzyme', () => {
  it('App shows "About"', () => {
    const about = shallow(
      <About />
    ).dive()
    expect(about.find('h1').text()).toEqual('About')
  })
})
Run Code Online (Sandbox Code Playgroud)

  • 我仍然收到错误消息:方法“text”仅适用于在单个节点上运行。0 找到了。在 ShallowWrapper.single (node_modules/enzyme/build/ShallowWrapper.js:1502:17) at ShallowWrapper.text (node_modules/enzyme/build/ShallowWrapper.js:744:21) 在 Object.&lt;anonymous&gt; (__tests__/about.test .js:13:29) 使用 Enzyme ✕ App 显示“关于”(11 毫秒) (2认同)