使用 Enzyme 在 .map 函数中测试 JSX
Testing JSX inside .map function using Enzyme
所以说我有这个 table:
<table>
<thead>
<tr>
<th>cat name</th>
</tr>
</thead>
<tbody>
{cats.map(cat => {
return (
<tr key={cat.id}>
<td styleName="table-item">{ cat.name }</td>
</tr>
);
})}
</tbody>
</table>
如何使用酶测试 map 函数中的 jsx?
我可以很好地测试它的其他部分,就像这样:
describe('<CatsTable />', () => {
const wrapper = mount(
<CatsTable cats={cats} />
);
it('renders correctly', () => {
expect(wrapper.find('table')).to.have.length(1);
expect(wrapper.find('tbody')).to.have.length(1);
});
});
但是,如果我尝试使用地图函数中的内容进行同样的操作,它 returns undefined
你可以使用下面的代码来测试map函数table里面的其他部分
describe('<CatsTable />', () => {
const wrapper = mount(
<CatsTable cats={cats} />
);
it('renders child correctly', () => {
expect(wrapper.find('tbody').children()).to.have.length(cats.length);
expect(wrapper.find('tbody').children().find('tr')).to.have.length(cats.length);
});
您可以在此处的文档中阅读有关如何使用酶的更多信息 http://airbnb.io/enzyme/docs/api/
所以说我有这个 table:
<table>
<thead>
<tr>
<th>cat name</th>
</tr>
</thead>
<tbody>
{cats.map(cat => {
return (
<tr key={cat.id}>
<td styleName="table-item">{ cat.name }</td>
</tr>
);
})}
</tbody>
</table>
如何使用酶测试 map 函数中的 jsx?
我可以很好地测试它的其他部分,就像这样:
describe('<CatsTable />', () => {
const wrapper = mount(
<CatsTable cats={cats} />
);
it('renders correctly', () => {
expect(wrapper.find('table')).to.have.length(1);
expect(wrapper.find('tbody')).to.have.length(1);
});
});
但是,如果我尝试使用地图函数中的内容进行同样的操作,它 returns undefined
你可以使用下面的代码来测试map函数table里面的其他部分
describe('<CatsTable />', () => {
const wrapper = mount(
<CatsTable cats={cats} />
);
it('renders child correctly', () => {
expect(wrapper.find('tbody').children()).to.have.length(cats.length);
expect(wrapper.find('tbody').children().find('tr')).to.have.length(cats.length);
});
您可以在此处的文档中阅读有关如何使用酶的更多信息 http://airbnb.io/enzyme/docs/api/