反应单元测试,检查是否选中了复选框

时间:2016-01-14 15:23:22

标签: javascript unit-testing reactjs chai

我正在尝试使用chai为我的反应代码构建一些单元测试。我似乎在定位和检查是否选中了复选框时遇到了一些麻烦,并且我不确定原因。到目前为止,我尝试了两种方法:

首先是:

let Element;

describe('Search Filters Filter Component', () => {
  beforeEach(function() {
    Element = TestUtils.renderIntoDocument(<searchFiltersFilterComponent filterGroup={filterGroup} filter={filter} />);
});

it('renders the search-filters-filter component', () => {
    expect(Element).not.to.be.undefined();
});

 it('is checked when provided with correct object', () => {
    const domNode = ReactDOM.findDOMNode(Element);
    const input = domNode.querySelector('input');
    console.log("checkbox?", input);
    //expect(element(input.isSelected()).to.be.true();
});

});

现在这不起作用,输入记录为null。我尝试的第二种方法是:

it('is checked when provided with correct object', () => {

    const CheckBox = TestUtils.findRenderedDOMComponentWithClass(Element, 'singleFiltersFilterInput');
    console.log("checkbox?", CheckBox);
    //expect(element(by.model(el)).isSelected()).to.be.true();
});

这个给我一个错误:Invariant Violation: findAllInRenderedTree(...): instance must be a composite component

我很难过如何定位并检查是否正确选中了复选框,我只想说expect(element(input.isSelected()).to.be.true();,但我似乎无法正确定位测试渲染上的复选框。任何建议都将不胜感激,谢谢!

更新

所以似乎将SearchFiltersFilterComponent大写是我的问题之一,我解决了这个问题,我现在可以正确地看到该组件:

  const CheckBox = TestUtils.findRenderedDOMComponentWithClass(Element, 'singleFiltersFilterInput');
  console.log("checkbox?", CheckBox);
  expect(CheckBox.is.selected()).to.be.true();

然而,这种说法是不正确的。所以我想知道看到断言检查复选框的正确方法是什么?我可以在日志中看到它有一个_checkness值,所以我可以CheckBox._checkness,但我更愿意,如果有一个断言做了这个。非常感谢任何建议!

0 个答案:

没有答案