Я использую 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)
И простой тест 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')
})
})
Тест Jest должен пройти, но я получаю сообщение об ошибке:
Метод «text» предназначен для запуска только на одном узле. 0 нашел взамен.
Что мне не хватает?
=== Обновить
Тест снимка проходит:
describe('With Snapshot Testing', () => {
it('About shows "About"', () => {
const component = renderer.create(<About />)
const tree = component.toJSON()
expect(tree).toMatchSnapshot()
})
})
Есть ли способ интегрировать тест ферментного ожидания в тест-снимок? И как?
pageWithIntl
оборачивает его другой функцией. Что помогает мне узнать, что происходит, так это визуализировать его в снимке, чтобы фактически увидеть визуализированный результат. 28.03.2017expect(shallow(<About />).dive()).toMatchSnapshot()
затем вы можете добавить ещеdive()
, пока не дойдете до реального компонента. 29.03.2017