Reactjs 直接在功能组件中测试功能

Reactjs 直接在功能组件中测试功能,reactjs,jestjs,react-hooks,enzyme,reactjs-testutils,Reactjs,Jestjs,React Hooks,Enzyme,Reactjs Testutils,假设我们有一个功能组件,如下所示 const Test: React.FC = () => { const isItemSelected = () => { console.log('Hi); }; return ( <div> </div> ); }; const测试:React.FC=()=>{ const isItemSelected=()=>{console.log('Hi);}; 返回( ); }; 我想在编写单元测试时直接调

假设我们有一个功能组件,如下所示

const Test: React.FC = () => {

  const isItemSelected = () => { console.log('Hi); };

  return (
  <div> </div>
  );
};
const测试:React.FC=()=>{
const isItemSelected=()=>{console.log('Hi);};
返回(
);
};

我想在编写单元测试时直接调用isItemSelected函数,而不模拟任何单击或更改事件。有可能吗?

在不使用任何其他框架进行测试的情况下,轻松实现这一点的一种方法是将您的业务逻辑与实际的React组件分开,这样您就可以这样定义您的功能:

const isItemSelected = () => { console.log('Hi'); };
const Test: React.FC = () => {

  return (
  <div> </div>
  );
};
const isItemSelected=()=>{console.log('Hi');};
常量测试:React.FC=()=>{
返回(
);
};
现在您可以为isItemSelected编写简单的单元测试。如果函数中有依赖项,比如说“setState”,则可以将其作为参数传递给函数。但要小心,如果您实际上没有任何逻辑,那么您正在尝试对UI进行单元测试,这通常是不需要的,这可能是一种测试反模式


另请参见:

在不使用任何其他框架进行测试的情况下,轻松实现这一点的一种方法是将您的业务逻辑与实际的React组件分开,这样您就可以这样定义您的功能:

const isItemSelected = () => { console.log('Hi'); };
const Test: React.FC = () => {

  return (
  <div> </div>
  );
};
const isItemSelected=()=>{console.log('Hi');};
常量测试:React.FC=()=>{
返回(
);
};
现在您可以为isItemSelected编写简单的单元测试。如果函数中有依赖项,比如说“setState”,则可以将其作为参数传递给函数。但要小心,如果您实际上没有任何逻辑,那么您正在尝试对UI进行单元测试,这通常是不需要的,这可能是一种测试反模式


另请参见:

Hi Ali,不,我需要将该函数保留在React组件中。如果您真的不需要,可以发布一个完整的示例。实际上,我要测试的函数作为道具传递给另一个组件,并从那里触发该函数。我们现在不能修改设计。我们需要提高代码覆盖率,所以我们现在正在编写单元测试。嗨,阿里,不,我需要将该函数保留在React组件中。你真的不需要,如果你愿意,你可以发布一个完整的示例。实际上,我要测试的函数作为道具传递给另一个组件,并从那里触发该函数。我们现在不能修改设计。我们需要提高代码覆盖率,所以我们现在正在编写单元测试。