使用ase.mount时发生错误:“ TypeError:ReactWrapper只能包装有效元素”

时间:2018-11-23 22:15:52

标签: reactjs jestjs enzyme react-wrapper

将React元素传递给'mount'函数时出现此错误:

print MAIL $email->as_string;

但是,如果我删除变量并将元素直接传递给方法,它将起作用。

it("Book - move book to a shelf should work", () => {
    let test = (<Book book={book} />);
    let component = mount(test);
    const select = component.find("select").first();
    expect(select).toBeDefined();

它们有何不同?

更新: 由于某种原因,此方法(来自Jest的renderer.create)不会对此抱怨:

it("Book - move book to a shelf should work", () => {
    let component = mount(<Book book={book} />);
    const select = component.find("select").first();
    expect(select).toBeDefined();

令人惊讶的是,将变量转换为函数并将其传递给 React.createElement 的方法也很有效:

let component = renderer.create(<Book onMoveBook={onMoveBook} book={book} />);
const tree = component.toJSON(); // Works fine.

3 个答案:

答案 0 :(得分:3)

有相同的错误。该错误是由您如何安装“测试”组件引起的。执行此操作的方式不是安装有效的组件,而只是安装变量。您想将变量放在< />之间以使其成为组件。

您正在做let component = mount(test);,而您应该做let component = mount(<test/>);

答案 1 :(得分:0)

这可能与var let test的实际情况有关

“具有小写名称的组件是DOM元素;自定义元素必须以大写字母开头” https://github.com/airbnb/enzyme/issues/966

我一直在用火喉(对酶来说有些新的东西)喝酒,并记得昨天见过这篇文章,但是我不是100%积极的。

答案 2 :(得分:0)

我遇到了这个问题,这是由于使用玩笑嘲笑react模块引起的。

相关问题