其他分享
首页 > 其他分享> > 使用 testing-library-selector 创建可重用的选择器

使用 testing-library-selector 创建可重用的选择器

作者:互联网

使用 testing-library-selector 创建可重用的选择器

像你们中的许多人一样,我喜欢重用代码,从而尽可能减少重复。我发现了什么 测试库查询 是我在不同的测试文件中一遍又一遍地写相同的。对我来说,它的缺点如下:

让我们通过一个例子来讨论这个问题。想象一下,我们有一个零件。典型的模态有以下元素:

典型的应用程序有许多具有不同内容但具有相同 DOM 元素的模式。上述元素的 RTL 选择器可能如下所示:

 expect(screen.getByTestId("modal-title")).toHaveText(...);  
 expect(screen.getByTestId("modal-body")).toHaveText(...);  
 fireEvent.click(screen.getByRole("button", { text: "Close" }));  
 fireEvent.click(screen.getByRole("button", { text: "Cancel" }));  
 fireEvent.click(screen.getByRole("button", { text: "Submit" }));

由于上述原因,将查询存储在变量中的建议选项不会改善很多。此外,这里我们仅 得到* 查询。所以当我们需要的时候应该重写它们 询问* , 寻找* 变体。

这是我遇到的时候 测试库选择器 中的 生态系统 测试库文档的部分。使用其简单的 API,我们可以解决所有问题:

如果您需要将这些选择器用作其他测试的一部分,我更喜欢通过使用组件名称作为前缀和单词 UI 作为结尾(例如 ModalUI)来命名此类导入:

 ProductDetails/ProductDetails.test.tsx 从“../Modal/tests/ui”导入 { ui as ModalUI }; // 这里我将选择器与测试一起保存在文件中,因为它们只需要在这个文件中(你可能会发现从测试文件中导出它而不是像我那样创建文件很诱人<Modal/>组件以防在其他测试中需要它们,但实际上[ 不推荐](https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/no-export.md) )  
 常量 ui = {  
 removeProductButton: byRole("button", "Remove"),  
 ...  
 }; it("点击删除按钮时应该打开删除产品模式", () => {  
 fireEvent.click(ui.removeProductButton.get()); 期望(ModalUI.title.get()).toBeInTheDocument();  
 });

结论

测试库选择器 library 是一个有用的库,可以创建可重用的选择器,使我们的代码可读。我喜欢。希望您觉得这篇文章很有用,并与我分享您解决此问题的方法。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/22004/59480707

标签:get,button,testing,library,click,ui,测试,选择器
来源: https://www.cnblogs.com/amboke/p/16663970.html