Day 8: jest-dom

Jest-Dom 以及接下来的主角React-Testing-Library

在做测试时,我们需要针对特定的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


React-Testing-Library

接下来要写贯彻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使用

https://ithelp.ithome.com.tw/upload/images/20210923/20120076WU8mqvnRGF.png


<<:  Day8-TypeScript(TS)的介面型别(Interface)Part 1

>>:  Day 21 | Livewire 实作 Todo List(三): 切换其他日期的待办事项

Vue.js指令(v-model)绑定(DAY27)

现今常常会在购物网站中看到顾客点选产品时,网页会依据顾客的操作自动列出清单,或是看到一些使用者在输入...

Html表单&表单元素(DAY5)

Html表单是用来与使用者互动的,例如在网路上的购物网站中的会员注册、选购商品按钮、基本资料填写或是...

Day 17:今天来部署你的 Angular 应用程序吧!

昨天我们已经将制作好的版型,套用到 Angular 的根元件 AppComponent,今天,我们就...

[经典回顾]资讯服务异常公关用语「 骇客攻击」

资料来源: [HITCON年会] 亲爱的,问题不一定是骇客造成的 保密防谍、人人有责 骇客语录 ...

【Day23】计数器减号按纽及测试小练习,先别偷看解答R ~ (⁎˃ᆺ˂)

这篇要来个小小练习,增加一个减号的按钮,并针对其结果作一个单元测试。 先别往下看,给自己五到十分钟....