在做测试时,我们需要针对特定的dom node去query来验证dom是否有做改变以及是否符合我们所预期的结果.
toBeDisabled
toBeEnabled
toBeEmptyDOMElement
toBeInTheDocument
toBeInvalid
toBeRequired
toBeValid
toBeVisible
toContainElement
toContainHTML
toHaveAccessibleDescription
toHaveAccessibleName
toHaveAttribute
toHaveClass
toHaveFocus
toHaveFormValues
toHaveStyle
toHaveTextContent
toHaveValue
toHaveDisplayValue
toBeChecked
toBePartiallyChecked
toHaveErrorMessage
这是jest-dom所提供的一些matcher,当我们想要使用这些匹配器时
import '@testing-library/jest-dom/extend-expect'
在测试档引入这段,就可以使用jest-dom所有的matcher
接下来要写贯彻RTL的一个function也就是render,这边来写一个render的原理,其实RTL里面是包含了许多Dom Testing Library的函式
import { getQueruesForElememt } from '@testing-libraryt/dom';
import ReactDOM from 'react-dom';
const render = (comp) => {
const container = document.createElement('div');
ReactDOM.render(comp, container);
const query = getQueruesForElememt(container);
return { container, ...query }
}
透过getQueruesForElememt所以我们才可以使用众多的func e.g.getByRole getByLabelText等
最後一个阶段,我们来看一下如何看执行测试当下的track all of dom node
const { getSomething, debug } = render(<Comp />);
debug()
它就会印出所有的component内的节点,以供debug使用
<<: Day8-TypeScript(TS)的介面型别(Interface)Part 1
>>: Day 21 | Livewire 实作 Todo List(三): 切换其他日期的待办事项
现今常常会在购物网站中看到顾客点选产品时,网页会依据顾客的操作自动列出清单,或是看到一些使用者在输入...
Html表单是用来与使用者互动的,例如在网路上的购物网站中的会员注册、选购商品按钮、基本资料填写或是...
昨天我们已经将制作好的版型,套用到 Angular 的根元件 AppComponent,今天,我们就...
资料来源: [HITCON年会] 亲爱的,问题不一定是骇客造成的 保密防谍、人人有责 骇客语录 ...
这篇要来个小小练习,增加一个减号的按钮,并针对其结果作一个单元测试。 先别往下看,给自己五到十分钟....