【发布时间】:2018-06-20 03:11:39
【问题描述】:
我花了一整天时间研究 Enzyme 文档并开始掌握基础知识。
我正在循环访问我的 Redux 存储中的一些数据,以将这些嵌套的 <BudgetWidgetCard /> 组件渲染到我的父组件中,并希望确保其中的 X 被渲染到页面。
组件示例
<div>
<main className="col-sm-9 offset-sm-3 col-md-10 offset-md-2 pt-3">
<h1 name='main-header-title'>{metaProperties.pageTitle}</h1>
{budgetWidgets.map((widget, i) => {
return <BudgetWidgetCard className='budget-widget' title={widget} key={i} state={this.props} />
})}
</main>
</div>
测试方法
it('+++renders the budget widget items correctly', () => {
console.log(wrapper.children().children().filter('budget-widget').length)
console.log(wrapper.find(<BudgetWidgetCard />).forEach(child => {
console.log(child.text())
}))
})
我不喜欢调用 children().children()... 的想法似乎是紧密耦合的,但也许这就是可行的方法。我的最终目标是简单地说明componentA 的浅层渲染具有X 的<BudgetWidgetCards /> 数量
我得到以下输出:
Review Current Budget<BudgetWidgetCard /><BudgetWidgetCard /><BudgetWidgetCard /><BudgetWidgetCard />Add A New Budget Item<ReduxForm /><BudgetTable />
使用以下内容时:
wrapper.children().forEach(child=> {
console.log(child.text())
})
测试文件
import React from 'react'
import { shallow, mount } from 'enzyme';
import renderer from 'react-test-renderer'
// import configureStore from 'redux-mock-store'
import {Provider} from 'react-redux'
import {createStore} from 'redux'
import { MemoryRouter as Router, withRouter } from 'react-router-dom';
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import { configureStore } from '../src/configuration/store';
configure({ adapter: new Adapter() });
/**
BUDGET COMPONENTS
**/
import Budget from '../src/Budget/components/Budget';
import BudgetWidgetCard from '../src/Budget/components/Budget';
let mainHeaderTitle = 'Review Current Budget';
const store = configureStore();
const wrapper = shallow(<Budget />);
// Snapshot for Budget React Component
describe('>>>B U D G E T --- Snapshot',()=>{
it('+++capturing Snapshot of Budget', () => {
const wrapper = shallow(<Budget />);
expect(wrapper).toMatchSnapshot();
})
});
describe('>>>B U D G E T --- Elements Getting Rendered Correctly',()=>{
it('+++correct title is getting rendered as header', () => {
expect(wrapper.find('h1[name="main-header-title"]').text()).toEqual(mainHeaderTitle);
})
it('+++renders the budget widget items correctly', () => {
expect(wrapper.children().find(BudgetWidgetCard).length).toEqual(4)
})
});
【问题讨论】:
标签: reactjs react-redux jestjs enzyme