lom*_*ine 5 reactjs react-testing-library
我正在尝试测试使用反应测试库构建的表
我正在使用 debug 输出
<body>
<div>
<div
class="table-wrapper"
>
<div
class="table-component__header"
/>
<table
class="test-table"
>
<tbody>
<tr>
<td
class="text-grid-item"
data-testid="text-grid-item"
>
test table data
</td>
</tr>
</tbody>
<tfoot
class="table_footer"
>
<tr>
<td />
</tr>
</tfoot>
</table>
</div>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
我试图断言test table data
那里有
expect(findByTestId('text-grid-item')).toHaveTextContent('test table dat')
Run Code Online (Sandbox Code Playgroud)
但它失败了
received value must be a Node.
Received has type: object
Received has value: {}
Run Code Online (Sandbox Code Playgroud)
我怎样才能断言文本test table data
在那里
import React from 'react'
import { render } from '@testing-library/react'
import { Table } from './table'
const givenTableWithElement = (test: Array<TableElement>) => {
const table = {
tableEntries: [{ tableElements: test }],
type: 'table',
tableType: 'test'
}
return table
}
describe('Components should render depending on their prop type', () => {
test('Given table element is text, when rendered, text table class should be returned', () => {
const imageTableTest: TableProps = givenTableWithElement([
{
text: 'test table data',
display: {
mobile: true,
wrap: false
}
}
])
const { debug } = render(<Table {...imageTableTest} />)
debug()
const { getByTestId } = render(<Table {...imageTableTest} />)
expect(findByTestId('text-grid-item')).toHaveTextContent('test table dat')
})
})
Run Code Online (Sandbox Code Playgroud)
你可以不断getByText('test table data')
言任何事情。
getByText
如果找不到它要查找的文本,测试就会失败。如果文本在那里并且您的测试通过,那么即使您没有expect()
明确使用断言,您实际上也断言它在那里。尽管在使用(或以 开头的queryByText
任何其他方法)时要小心,但使用它将返回,因此如果它找不到它正在寻找的文本,它不会使您的测试失败,并且您会得到误报。react-testing-library
query
null
如果您仍然想使用,expect
您可以尝试执行以下操作:
const gridItemText = getByTestId('text-grid-item').innerHTML
expect(gridItemText).toBe('test table data')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15227 次 |
最近记录: |