javascript - enzyme 测试容器

标签 javascript reactjs ecmascript-6 jestjs enzyme

测试容器中存在的组件/元素是否有意义?

我有这个节点

<div className="App">
  <input type="text" onChange={[undefined]} />
  <button onClick={[undefined]}>
    Add
  </button>
</div>

但是为什么测试失败了呢?

const wrapper = shallow(<App />);
console.log(wrapper.debug())
expect(
  wrapper.contains('<input type="text" onChange={()=>{}} />')
).toBeTruthy();

https://codesandbox.io/s/rjl3p727wm

最佳答案

有两个原因:

  1. contains 函数需要传入一个 ReactNode 或 Nodes 而不是一个选择器,这意味着我们必须去掉引号。
  2. ()=>{} 不等于 undefined,后者是 App 组件内的值。

合并这些更改:

expect(
  wrapper.contains(<input type="text" onChange={undefined} />)
).toBeTruthy();

A fork of codesandbox

关于javascript - enzyme 测试容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53728669/

相关文章:

javascript - redux 获取输入文本值

c# - MasterPage 的 UserControl 中的 ScriptManager.RegisterClientScriptBlock

javascript - 多个文件上传并即时压缩失败

javascript - 创建全局数组以从所有组件访问

javascript - 警告 : validateDOMNesting(…): <form> cannot appear as a descendant of <form> by using semantic-ui-react modal

javascript - <Class> 不是构造函数

javascript - 通过按钮添加

javascript - 使用 JavaScript 使用 Selenium 滚动到网页上的元素

javascript - 运行 Babel 应用程序时出错

javascript - array.push 是一种重新分配的形式吗?