Javascript 为什么酶找不到';tr';在桌子上?
我正在用酶写一些测试,但我有一些奇怪的行为。这是我的测试:Javascript 为什么酶找不到';tr';在桌子上?,javascript,reactjs,enzyme,Javascript,Reactjs,Enzyme,我正在用酶写一些测试,但我有一些奇怪的行为。这是我的测试: import React from 'react' import { TypeTable } from 'routes/Type/components/TypeTable' import { shallow } from 'enzyme' import { Table } from 'react-toolbox' // ... let _props, _wrapper beforeEach(() =&g
import React from 'react'
import { TypeTable } from 'routes/Type/components/TypeTable'
import { shallow } from 'enzyme'
import { Table } from 'react-toolbox'
// ...
let _props, _wrapper
beforeEach(() => {
_props = {
getTypes: sinon.spy(),
types: [
{ name: 'type 1'},
{ name: 'type 2'}
]
}
_wrapper = shallow(<TypeTable {..._props} />)
})
it('Should render a <Table>', () => {
expect(_wrapper.is(Table)).to.be.true
})
it('should render 2 rows', () => {
expect(_wrapper.find('tbody').find('tr')).to.have.length(2)
})
这似乎是正常的,其中包含几个tr
我遗漏了什么吗?
shallow
不会“呈现”子组件。它用于测试单个组件,而不是其子组件。我认为使用mount
而不是shallow可以让你测试你想要的东西
浅层渲染有助于约束您将组件作为一个单元进行测试,并确保您的测试不会间接断言子组件的行为
好的,但是
\u wrapper.html()
返回正确的html是否正常?是的。“浅”和“山”的区别有时有点令人困惑。当我遇到问题时,我通常会在它们之间进行检查/切换。例如,当我想测试如何将道具传递给子组件而不是实际输出时,我通常使用mountcareful@Amida谢谢你,伙计!
'<table data-react-toolbox="table">
<thead>
<tr>
<th>name</th>
</tr>
</thead>
<tbody>
<tr data-react-toolbox-table="row">
<td>type 1</td>
</tr>
<tr data-react-toolbox-table="row">
<td>type 2</td>
</tr>
</tbody>
</table>'