开玩笑找不到className

时间:2018-12-19 15:00:57

标签: javascript reactjs jestjs enzyme

我正在努力确定为什么开玩笑的测试永远找不到我的组件类/ 这是调试语句的组件输出

  <FileLine file={{...}} readOnly={false} onSelectedRevisionChanged={[Function: mockConstructor]}>
  <tr className="warning">
    <td className="col-xs-2">
      Data
    </td>
    <td className="col-xs-2">
      <select className="revision-selection form-control" value="1" onChange={[Function: value]}>
        <option value="1">
          1
        </option>
        <option value="2">
          2
        </option>
      </select>
    </td>
    <td className="col-xs-2">
      Loading...
    </td>

我的笑话测试正在检查以下内容

it.only('sends selected revision when changed', () => {		
		const selectionCallBack = jest.fn();
		const component = mount(<FileLine file={fileUnderTest} readOnly={false} onSelectedRevisionChanged={selectionCallBack} />);

		//This will change the drop down to a different value
		const revisionSelection = component.find('revision-selection');
		console.log(component.debug());
		expect(revisionSelection.length).to.equal(1);

		revisionSelection.simulate('change', { target: { value: '2' } });

		expect(selectionCallBack).toBeCalledWith('packageRoot/F5___/Apps/GM/GM.E86_r2');
	});

expect语句始终指示versionSelection始终未定义。鉴于在输出中显示该类,这完全是不可能的。

1 个答案:

答案 0 :(得分:0)

如果component.find('.revision-selection')(注意查找结果中的前导.)返回了undefined,则很有可能该组件未呈现。

我会检查:

expect(component.find('.revision-selection')).to.have.lengthOf(1);

然后更新您的revisionSelection分配以定位第一个匹配项:

const revisionSelection = component.find('.revision-selection').first();