我的反应酶测试中出现此错误-TypeError: Cannot read property 'have' of undefined
下面是我的测试文件:
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),但是我现在以错误的方式传递了分页组件吗?
答案 0 :(得分:1)
我认为使用酶标匹配器后出现的错误是因为酶无法在Pagination
中找到TransactionsTable
成分。
toHaveLength
与酶包装器一起使用时,笑话匹配器在失败时会给出奇怪的输出。
尝试使用以下语句
expect(wrapper.find(Pagination).length).toBe(1);
我敢打赌,您会得到一个错误,期望值是1
但收到0
。
PS:here是Jest回购中关于奇怪输出的问题。
答案 1 :(得分:0)
这取决于您使用的是哪个测试运行程序或断言库。
对于Jest,您想使用toHaveLength
it('contains a table', () => {
const wrapper = mount(<TransactionsTable />);
expect(wrapper.find(Pagination)).toHave.lengthOf(1);
});
to.have.lengthOf(1)是柴的所在