Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么';测试私有无状态组件函数的最佳方法是什么?_Javascript_Reactjs - Fatal编程技术网

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测试结合起来并不是一个好的实践,但我并不认为单元测试在这里起到了什么作用。