首页 > 解决方案 > 如何在笑话和酶中模拟一个函数

问题描述

我想在我的反应组件中进行一个模拟函数的测试,例如我有:

const app=()=>{

const [state,setState]=useState("");

const func=(item)=>{
   setState(item)
}

  return(
   <div>{state}<div/>
  )
}

对于这个例子,我想用 jest 和酵素测试名为“func”的函数:

let wrapper=mount(<App/>)

test("testing",()=>{
   let item="test"
   //mock function -> func(item)
  // how to mock that function 
  }
)

有人可以帮我语法吗?

标签: reactjsjestjsenzyme

解决方案


虽然您可以监视和模拟基于类的组件中方法属性的结果,但您不能对功能组件使用相同的方法。

您应该做的是触发或模拟调用func功能组件中的方法的特定行为,然后测试预期的行为(即是否调用了 props 方法,或 DOM 元素的变化等)。

如果它是由useEffect()钩子触发的,则必须通过更新依赖数组中使用的道具(使用setProps )来触发该钩子。


推荐阅读