使用jest和react-testing-library测试方法

cqoc49vn  于 2023-04-18  发布在  Jest
关注(0)|答案(2)|浏览(180)

我不能得到答案,如何不能达到一个功能组件内的方法iin使用jest和react-testing-libraryReact。
我尝试了酶,但我看到所有的都在改变RTL。

import React from "react";

const simpleComponents = (props) => {

    const simpleMethod = () =>{ 
        // method logic
    };

    return <h1>test</h1>;
    };
}

export default simpleComponents;
n6lpvg4x

n6lpvg4x1#

你应该试着只测试用户在真实的浏览器中会看到的内容,而不是组件的内部逻辑。这就是react-testing-library所提倡的:编写测试,因为他们看到/做的是真实的的用户会做的事情,所以给予信心。
https://testing-library.com/docs/guiding-principles
遵循这些指导原则,您应该尝试构建一个测试,该测试触发可见元素(由您的组件呈现)上的用户交互,并且将涉及simpleMethod的执行。
这就是react-testing-library查询的全部要点:getByText、getByPlaceholder、getByRole:一个真实的的用户会看到的东西,隐藏内部逻辑。但我猜你可以用酶(我从来没有用过酶)有这种方法。
用这种方法编写测试会导致更少的测试,但更强大的测试,恕我直言这是一件好事。它与经典的单元测试(例如在Java上下文中)有很大的不同,在经典的单元测试中,你测试函数,输入,输出...
事实上,你的React组件是一个函数,它的输入是用户交互,它的输出是一个DOM。

nwo49xxi

nwo49xxi2#

simpleMethod函数定义在simpleComponents SFC的私有作用域中。它没有公开,因此您无法在simpleComponents之外获取该函数。
但是你可以间接地测试它,例如:

const simpleMethod = () =>{ 
  console.log('method logic');
};

首先,需要使用clicksubmit等事件来触发它。我们添加了一个console.log方法,这样我们就可以监视console.log方法,以检查simpleMethod函数是否被调用。

相关问题