将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.
答案 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模块引起的。