0

我正在使用 FixedDataTable ( https://facebook.github.io/fixed-data-table/ ),我只想断言列标题设置正确。这是我的组件定义:

import React from 'react';
import {Table, Column, Cell} from 'fixed-data-table';

// Table data as a list of array.
const rows = [
  ['a1', 'b1', 'c1'],
  ['a2', 'b2', 'c2'],
  ['a3', 'b3', 'c3'],
  // .... and more
];

// Render your table

class TestTable extends React.Component {
  constructor(props) {
    super(props);
  }

  render() {
    return (
      <Table
        rowHeight={50}
        rowsCount={rows.length}
        width={900}
        height={1000}
        headerHeight={50}>
        <Column
          header={<Cell>Column 1</Cell>}
          cell={<Cell>Column 1 static content</Cell>}
          width={300}
        />
        <Column
          header={<Cell>Column 2</Cell>}
          cell={<Cell>Column 2 static content</Cell>}
          width={300}
        />
        <Column
        header={<Cell>Column 3</Cell>}
        cell={({rowIndex, ...props}) => (
          <Cell {...props}>
          Data for column 3: {rows[rowIndex][2]}
          </Cell>
        )}
        width={300}
        />
      </Table>
    );
  }
}

我的测试如下:

import React from 'react';
import { shallow } from 'enzyme';
import {Table, Column, Cell} from 'fixed-data-table';

import TestTable from '../../src/components/test_table';

describe('<TestTable/>', () => {

    it('renders a blank table', () => {
        const wrapper = shallow(<TestTable/>);
        //debugger;
        expect(wrapper.find(Table)).to.have.length(1);

        expect(wrapper.find(Table).children()).to.have.length(3);

        expect(wrapper.find(Table).childAt(0).prop('header')).to.equal(<Cell>Column 1</Cell>);
});

测试失败并出现以下错误:

‣ AssertionError: 预期 { Object ($$typeof, type, ...) } 等于 { Object ($$typeof, type, ...) } 在上下文。(base/test/components/test_table_test.jsx:82:83)

如何测试标题是否设置为我想要的值?如何创建一个针对 proc 进行测试的匹配器?

我正在使用酶、反应、摩卡和柴。

4

3 回答 3

0

由于prop()返回普通对象,我们可以使用shallow()mount()获取 Wrapper 来包装它:

expect(
  shallow(wrapper.find(Table).childAt(0).prop('header')).find(Cell).prop("children")
).to.equal("Column 1");

或像对 Wrappers 一样使用任何其他匹配器

于 2019-10-10T09:12:38.053 回答
0

您可以尝试使用 Enzyme .is 选择器来检查组件是否为 Cell,然后检查它是否收到了 Column 1 的 children 属性:

expect(wrapper.find(Table).childAt(0).prop('header').is(Cell)).to.be.true;
expect(wrapper.find(Table).childAt(0).prop('header').childAt(0)).to.equal('Column 1');

.is 的文档:http: //airbnb.io/enzyme/docs/api/ReactWrapper/is.html

于 2016-12-15T01:09:13.940 回答
0
expect(wrapper.find(Table).childAt(0).prop('header')).to.equal(<Cell>Column 1</Cell>);

不起作用,因为它比较对象身份并且您正在比较不同的对象。尝试使用深度等于比较:

expect(wrapper.find(Table).childAt(0).prop('header')).to.deep.equal(<Cell>Column 1</Cell>);
于 2019-03-26T13:44:33.223 回答