Javascript 什么';测试私有无状态组件函数的最佳方法是什么?
假设我们有这个无状态组件Javascript 什么';测试私有无状态组件函数的最佳方法是什么?,javascript,reactjs,Javascript,Reactjs,假设我们有这个无状态组件 import React from ‘react’; const HelloWorld = ({name}) => ( const sayHi = event => { alert(`Hi ${name}`); } return ( <div> <a href="#" onClick={sayHi}>Say Hi</a> </di
import React from ‘react’;
const HelloWorld = ({name}) => (
const sayHi = event => {
alert(`Hi ${name}`);
}
return (
<div>
<a
href="#"
onClick={sayHi}>Say Hi</a>
</div>
);
);
export default HelloWorld;
从“React”导入React;
常量HelloWorld=({name})=>(
const sayHi=事件=>{
警报(`Hi${name}`);
}
返回(
);
);
导出默认HelloWorld;
测试sayHi
功能的最佳方法是什么?我知道我需要为它做单元测试。如果您只看一下。您基本上希望模拟单击并模拟/监视
警报
调用
大致如下:
import React from 'react';
import {shallow} from 'enzyme';
test('that alert is called when clicking link', () => {
const testName = 'Jack';
// Render a checkbox with label in the document
const hw = shallow(
<HelloWorld name={testName} />
);
const alert = jest.fn();
hw.find('a').simulate('click');
expect(alert).toBeCalledWith('Hi ' + testName);
});
从“React”导入React;
从“酶”导入{shall};
test('单击链接时调用该警报',()=>{
const testName='Jack';
//在文档中呈现带有标签的复选框
常数hw=浅(
);
const alert=jest.fn();
hw.find('a')。simulate('click');
expect(alert).toBeCalledWith('Hi'+testName);
});
无状态函数仍然是函数。您希望确保它按照tin上的说明进行操作,不会对不卫生的输入进行有趣的操作,在虚拟DOM上实际执行某些操作,等等。使其无状态不会改变您必须执行的测试的性质。也许我不明白你的问题。@AkshatMahajan实际上根本不是关于无状态函数的。我的问题是,考虑到上面的例子,测试sayHi
函数的最佳方法是什么,因为我不能从外部(任何测试框架)访问它。这是一个好方法,但我要避免的是通过HTML事件访问我的私有函数。此外,这不是已经是E2E测试了吗?将单元测试和E2E测试结合起来是一种很好的做法吗?@josepl我不知道该怎么说您希望“避免通过HTML事件访问[您的]私有函数”。我的理解是,我提供的代码与测试您提供的组件的方式基本相同。此外,我的理解是,将单元测试和E2E测试结合起来并不是一个好的实践,但我并不认为单元测试在这里起到了什么作用。