在React功能组件中,使用玩笑和酶测试内部功能

时间:2020-06-02 13:52:30

标签: reactjs unit-testing jestjs enzyme react-functional-component

我在React中使用功能组件,我需要为功能组件中的方法编写单元测试用例。

import React from 'react';
function print(){  console.log('hello');  }

function Welcome(props){     return <h1>{props.name}</h1>; }

export default Welcome; 

开玩笑和酵素: test (method print , ()=> { const container = shallow(<Welcome />).instance().print() }

instance:TypeError无法读取null属性

我已经阅读了功能组件,在React 16+中没有实例。有人会帮助建议一种为功能组件中的方法编写单元测试用例的方法。

2 个答案:

答案 0 :(得分:1)

我只想提醒您,您不能/不能“自己”测试功能组件的功能,您只能测试它们的实现。

因此,正如@EstusFlask 指出的那样,您不能创建 FC 的实例,然后在测试用例中调用它的函数;但是你可以在你的 FC 中使用这个函数(你应该,这是创建函数的重点),然后在你的测试用例中 - 测试这个函数执行的输出/结果。

答案 1 :(得分:0)

print函数在模块作用域中定义。与任何其他范围值一样,不能在范围之外访问它。

为了便于访问,应将其导出:

export function print(){  console.log('hello');  }

在使用的相同模块中声明时,无法对其进行嘲笑。 print不是方法,功能组件没有可以包含方法的实例。除非以instance().print公开,否则不能以useImperativeHandle的身份访问。