今天来讲讲如何来测试hook的原始版本
来,我们来先做一个超简单的hook就叫useName吧
import { useState } from 'react';
export const useChangeName = () => {
const [name, setName] = useState<string>('stan');
const setFullName = () => {
setName('stanmaomao');
};
return { name, setFullName };
};
看吧 很简单,就是export 一个name跟一个set的function,这时候我们测试的原始码怎样写呢!!!
这部分我就简单讲解一下,我们写一个test case,然後建立变数,来取得之後更新得值,我们写一个Component的function来render,因为hook只能在functional component,所以用一个外层的变数result来取得hook回传的值,其中act的函数是非同步的互动更新,因此setState的部分要包在act里面来达到非同步的更新.
import { render, act } from '@testing-library/react';
import { useChangeName } from '@hooks/useName';
test.only('useName', () => {
let result: any = {};
function Component() {
result = useChangeName();
return null;
}
render(<Component />);
expect(result.name).toBe('stan');
act(() => {
result.setFullName();
});
expect(result.name).toBe('stanmaomao');
});
明天会来讲进阶版renderHook的功能.
ref: kentc相关的文章与程序
package.json专案与套件相依设定档 在开启专案时我们使用的npm run serve指令就...
前言 本篇文章,是要设定系统的时区与时间,并维护时区与时间的设定。 设定本地时间与时区 作业系统的时...
本篇延续手刻tableRWD应用,将范例配合选取器改为响应式隐藏栏位并能展开 上几篇介绍table...
前言 透明向来是敏捷强调的,Scrum 更是把透明列为三大支柱之一,今天想跟大家分享一下我对透明的看...