我不能得到答案,如何不能达到一个功能组件内的方法iin使用jest和react-testing-libraryReact。
我尝试了酶,但我看到所有的都在改变RTL。
import React from "react";
const simpleComponents = (props) => {
const simpleMethod = () =>{
// method logic
};
return <h1>test</h1>;
};
}
export default simpleComponents;
2条答案
按热度按时间n6lpvg4x1#
你应该试着只测试用户在真实的浏览器中会看到的内容,而不是组件的内部逻辑。这就是react-testing-library所提倡的:编写测试,因为他们看到/做的是真实的的用户会做的事情,所以给予信心。
https://testing-library.com/docs/guiding-principles
遵循这些指导原则,您应该尝试构建一个测试,该测试触发可见元素(由您的组件呈现)上的用户交互,并且将涉及simpleMethod的执行。
这就是react-testing-library查询的全部要点:getByText、getByPlaceholder、getByRole:一个真实的的用户会看到的东西,隐藏内部逻辑。但我猜你可以用酶(我从来没有用过酶)有这种方法。
用这种方法编写测试会导致更少的测试,但更强大的测试,恕我直言这是一件好事。它与经典的单元测试(例如在Java上下文中)有很大的不同,在经典的单元测试中,你测试函数,输入,输出...
事实上,你的React组件是一个函数,它的输入是用户交互,它的输出是一个DOM。
nwo49xxi2#
simpleMethod
函数定义在simpleComponents
SFC的私有作用域中。它没有公开,因此您无法在simpleComponents
之外获取该函数。但是你可以间接地测试它,例如:
首先,需要使用
click
,submit
等事件来触发它。我们添加了一个console.log
方法,这样我们就可以监视console.log
方法,以检查simpleMethod
函数是否被调用。