JEST+REACT测试库:我应该在测试前使用bepreAll呈现我的组件吗? [英] JEST + React Testing Library: should I render my component with a beforeAll before tests?

查看:16
本文介绍了JEST+REACT测试库:我应该在测试前使用bepreAll呈现我的组件吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

正如标题所说,我使用的是RTL+Jest(带有创建-反应-应用程序设置)。

我的问题是,我是否应该在每个测试中使用bepreAll预先呈现该块中的组件,这样每次测试就不必从头开始重新呈现组件,因为我的测试套件总是从相同的基本组件开始。这样做是否会提高性能?

例如,这样做是否有改进

describe("MyComponent", () => {
    beforeAll(() => {
        render(<MyComponent {...props} />);
    });

    it("tests something", () => {
        expect(something).toDoSomething();
    });

    it("tests something else", () => {
        expect(somethingElse).toDoSomethingElse();
    });
});

(除了减少冗长和重写组件呈现之外)?

describe("MyComponent", () => {

    it("tests something", () => {
        render(<MyComponent {...props} />);
        expect(something).toDoSomething();
    });

    it("tests something else", () => {
        render(<MyComponent {...props} />);
        expect(somethingElse).toDoSomethingElse();
    });
});

我是否应该通过执行其他操作来以不同的方式处理测试套件?这只是个人喜好的问题吗?

我读了Kent C Dodds博客this post,他主要说这会降低代码的可读性,但不讨论性能或它是否会对测试产生任何影响。

推荐答案

这主要是个人喜好的问题,但也与组件的工作方式有关。您可能需要在不同的上下文中呈现您的组件(道具、模仿的复制存储、模仿的提供者...)。在bepreEach中呈现组件可能会更快,但更难更改测试条件。

根据我的经验,根据经验,表示组件是在测试本身中呈现的,因为我希望测试不同的道具集以覆盖所有情况。因为它们是愚蠢的组件(只涉及道具,很少的模拟,简单的组件逻辑),这些测试通常是快速的。这是真正的单元测试&&Q;:测试纯函数I/O(我只在当前位置编写函数组件)。

对于智能/更大的组件,通常我一起测试一组组件(这更多的是一种集成测试),我必须设置模拟(redux,http服务...),测试倾向于类似于您在Cypress中看到的场景,以及用户交互。对于这些测试,我在每次之前都会呈现一次,并且编写更少但更长的测试。我最终得到的测试执行时间要长得多,但有很高的信心(接近E2E所能提供的)。

这或多或少就是https://kentcdodds.com/blog/write-tests所说的(据我所知),到目前为止,这似乎是一种可靠的方法。

这只是一些大概的想法/个人见解,我认为在这件事上没有一刀切的办法。唯一的目标是获得信心。

顺便说一句,当选择多次重新呈现组件时,不要忘记使用rerender函数来防止有趣的事情发生。

这篇关于JEST+REACT测试库:我应该在测试前使用bepreAll呈现我的组件吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆