reactjs - 如何在生产中使用 cypress-react-selector 执行集成测试?
问题描述
我在 SO 和文档站点中进行了很多搜索,但没有解决我的问题。
我们正在使用cypress-react-selector在工作中测试我们的 React 应用程序,它在本地开发中效果很好。
问题是,一旦我们开始生产并且 React 组件被缩小,所有测试都不会通过,因为该cy.getReact()
方法无法找到组件。
例如,在本地开发中,我曾经有这段代码:
cy
.getReact('Button', { props: { icon: 'myAwesomeIcon' } })
.should(({ node }) => node ? node.click() : null);
但是在生产中,Button
组件被缩小了(并且使用 React 开发工具,我发现它被简单地称为d
)。
如何创建能够在本地和生产环境中运行的测试?
解决方案
根据这个问题(20天前)“未找到组件”,因为未考虑 displayName,您可以通过添加一个来修复它displayName
以前,使用的 resq 依赖项没有像在 React 开发工具中那样考虑 displayName。结果是,如果它们的名称被缩小,即使它们有一个 displayName ,也无法通过它们的名称找到组件。
我已经为此提供了一个修复程序,它现在已经合并并在 resq 版本 1.10.1 中发布。
您能否更新 cypress-react-selector 以使用新的 resq 版本,以便 displayName 也在这里考虑?
感谢@jens-duttke,它在当前版本中可用。
对于一个功能组件,
const Button = (props) => { ... }
Button.displayName = 'Button'
对于一个类组件
class Button extends React.Component {
static displayName = 'Button';
...
}
推荐阅读
- java - 尝试执行 Jetty Server 时出现处理程序错误
- sql-server - 在 SqlUserDefinedTypeAttribute 中设置架构名称
- c - 打印存储在 unsigned int 中的实际负数
- excel - ActiveWorkbook.Saved 与 ThisWorkbook.Saved 与 Me.Saved
- .net - 不支持 Interop UserControls 的控件数组?
- php - PHP中文件序列化的内存效率
- phpunit - PHPUnit 是按“所有缺陷”还是“最近的缺陷”排序的?
- java - 问题变了,现在数组混淆了数据
- excel - 使用 excel 计算多张工作表中的完整/不完整
- python - 如何禁用python日志`正在请求的URL``刷新access_token`