代码之家  ›  专栏  ›  技术社区  ›  four-eyes

使用jest/enzyme选中复选框

  •  0
  • four-eyes  · 技术社区  · 5 年前

    如何测试是否选中了几个复选框?

    render()
        ...
            <React.Fragment>
                  <div
                    className='foo'>
                    <label>
                      <input
                        className='checkbox'
                        name='bar'
                        type='checkbox'
                        checked={this.props.checked}
                        onChange={() => { } }
                      />
                    </label>
                  </div>
            </React.Fragment>
        ...
    

    我试过了

    it('checks all checkboxes', () => {
        const component = shallow(
            <Foo
                ... />
        )
    
        expect(component
            .find('input[type="checkbox"][checked="checked"]'))
            .toHaveLength(content.length);
    });
    

    component
        .find({ type: 'checkbox' })
        .forEach(node => {
            expect(node
                .props
                .checked)
                .toEqual(true);
        });
    

    component
        .find('input')
        .forEach(node => {
            expect(node
                .props
                .checked)
                .toEqual(true);
        });
    

    component
        .find('.checkbox')
        .forEach(node => {
            expect(node
                .props
                .checked)
                .toEqual(true);
        });
    

    undefined 当第一个返回一个巨大的对象时( {Symbol(enzyme.__root__): {Symbol(enzyme.__root__): [Circular], Symbol(enzyme.__unrendered__): <Foo....

    0 回复  |  直到 5 年前
        1
  •  7
  •   Andreas Köberle    5 年前

    你只是错过了 props

    component
        .find('input')
        .forEach(node => {
            expect(node
                .props()
                .checked)
                .toEqual(true);
        });
    
    
        2
  •  0
  •   user6593810 user6593810    4 年前

    jest-dom ,您可以使用 expect(node).toBeChecked();