我正在尝试使用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
,但我更愿意,如果有一个断言做了这个。非常感谢任何建议!