【发布时间】:2021-01-13 19:14:05
【问题描述】:
我正在与我的团队讨论在查询翻译文本时什么是最佳做法。
由于非开发人员(翻译人员)可以修改这些文本,因此我们不希望每次翻译更改都会破坏我们的测试。但是我的一部分队友认为我们应该继续使用纯字符串,所以我们的测试类似于用户行为...... 在我们当前的代码中,我们正在做这样的事情来找到一个按钮:
const buttonCHF = await screen.findByText('My button textl');
我们目前正在使用 react-intl,所以我提出了一个解决方案,可以像这样找到相同的按钮:
const buttonText = getNodeText(<FormatteMessage id="buttonText" />);
const buttonCHF = await screen.findByText(buttonText);
我认为这将使测试更有弹性,而不会破坏使测试尽可能与用户行为最相似的规则,毕竟,我们将查询与用户相同的文本,同时避免无法维护的字符串。你怎么看?
【问题讨论】:
-
你能有一个只输出输入字符串的无操作“翻译”,然后对此进行测试吗?这样,您就可以不断测试用于查找真实翻译的 ID,以便了解它们是否意外更改。
标签: reactjs unit-testing testing jestjs react-testing-library