类型错误:无法读取未定义的属性“have”
2018-09-09
1716
我在 React 酶测试中收到此错误 -
TypeError:无法读取未定义的属性“have”
以下是我的测试文件:
import React from 'react';
import ReactDOM from 'react-dom';
import { mount } from 'enzyme';
import TransactionsTable from './TransactionsTable';
import Pagination from './Pagination';
it('contains a table', () => {
const wrapper = mount(<TransactionsTable />);
expect(wrapper.find(Pagination)).to.have.lengthOf(1);
});
我看不出我的代码与我见过的解决方案有何不同。此外,它似乎符合文档。我遗漏了什么吗?
更新
我也尝试修复以下问题(针对 Jest),但我输出了大量红色:
const wrapper = mount(<TransactionsTable />);
expect(wrapper.find(Pagination)).toHaveLength(1);
错误:
FAIL src/components/includes/TransactionsTable.test.js
● <TransactionsTable /> › contains a table
expect(received).toHaveLength(length)
Expected value to have length:
1
Received:
{Symbol(enzyme.__unrendered__): null, Symbol(enzyme.__renderer__): {"batchedUpdates": [Function batchedUpdates], "getNode": [Function getNode], "render":...
现在似乎是正确的方法调用(toHaveLength),但我现在是否错误地传入了 Pagination 组件?
2个回答
我猜想您在使用有效匹配器后遇到的错误是因为 Enzyme 无法在
TransactionsTable
中找到
Pagination
组件。
toHaveLength
Jest 匹配器在与 Enzyme 包装器一起使用时失败时会给出奇怪的输出。
尝试使用以下语句
expect(wrapper.find(Pagination).length).toBe(1);
我敢打赌您会收到一个错误,预期值为
1
,但收到的值为
0
。
PS: 这里 是 Jest repo 中有关奇怪输出的问题。
Oleksandr Kovpashko
2018-09-09
这取决于您使用的测试运行器或断言库。
对于 Jest,您需要使用 toHaveLength
it('contains a table', () => {
const wrapper = mount(<TransactionsTable />);
expect(wrapper.find(Pagination)).toHave.lengthOf(1);
});
而 chai 将是 to.have.lengthOf(1)
rockingskier
2018-09-09