问题标签 [chai-enzyme]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 每次测试前酶还原 getEelemenById
我存根getElementById
,beforeEach
并希望在另一个测试之前恢复它,并再次存根返回另一个值。因为现在我收到错误
TypeError: Attempted to wrap getElementById which is already wrapped
javascript - 赛普拉斯错误:错误:无法从“/Users/stein/node_modules/parse5/lib/tokenizer”中找到模块“./preprocessor”
当我执行柏树测试时
对于产品的源代码
和产品库
然后我在 Cypress 错误中收到以下错误:无法从 >'/Users/stein/node_modules/parse5/lib/tokenizer' 找到模块 './preprocessor'
如何修复此错误?
reactjs - 如何在 react-responsive 标签中测试 React 组件
在<MyComponent>
组件内部,我使用组件来区分渲染移动和桌面内容。react-responsive
<MediaQuery>
我想测试 HTML 里面<MyComponent>
的render()
using enzyme
,但似乎无法深入到子元素<MediaQuery>
:
但是, Aconsole.log(wrapper.debug())
表明内部没有任何<MediaQuery>
内容被渲染。我猜在测试中(没有实际的浏览器)window.width
没有设置导致<MediaQuery>
组件不渲染任何东西。
我想做的事:
我希望能够<MyComponent>
使用enzyme
with react-responsive
(或类似的东西,例如react-media
)来测试移动和桌面视口的内容。
我尝试过的事情:
- 通过使用
enzyme
'sshallow
withdive()
而不是 来规避这一点mount
,但无济于事。 - 使用
react-media
's<Media>
而不是react-responsive
's<MediaQuery>
,默认情况下似乎设置window.matchMedia()
为 true 。但是,这也不起作用。
console.log(wrapper.debug())
显示:
javascript - 如何配置酶柴?
我想在柏树中使用酶柴。我的源代码看起来像这样 ProductList
产品
测试看起来像这样
配置文件如下所示:
执行测试 TypeError 时收到以下错误消息:expect(...).to.be.present is not a function 当我尝试https://github中描述的其他一些断言时收到类似的错误消息.com/producthunt/chai-enzyme#installation如何修复配置以便可以使用 chai-enzyme 断言?
reactjs - TypeError:无法读取未定义 chai.js 的属性“查找”
我在测试我的反应应用程序时遇到问题,错误说:TypeError: Cannot read property 'find' of undefined 这是代码:
javascript - 无法监视组件测试中的操作
我正在尝试使用 chai-spie 测试调度的操作。我尝试了各种故障排除技术,但无法通过测试。
我试图监视(component.prototype, 'method)
and (wrapper.instance().props.store, 'dispatch')
,但没有成功。
这是组件代码:
这是测试代码:
我希望调用间谍,但我不断收到此错误:
任何帮助将不胜感激。
javascript - 如何测试 window.open 正在从反应组件中调用
我有一个反应组件,它呈现一系列其他组件,每个组件都有自己的复选框。
有一个名为 rulesToDownload 的状态钩子,它以一个空数组开始,并在选中/取消选中复选框时将 id 添加到其中/从中删除。
当点击“下载”按钮时,rulesToDownload 数组被传递给数据函数 DownloadFundDataById,forEach 在数组上,并为每个值调用 window.open,并带有附加 id 的 api 调用。数据函数被导入到组件中,而不是作为道具传入。
这会导致多个选项卡在数据下载时关闭之前闪烁。它并不完美,但它有效。
我想完成我的测试覆盖,并且需要测试该函数是否在按钮单击时被调用,并且它应该做它应该做的事情。
任何帮助表示赞赏。
下面的代码:
摘要.test.js:
我可以确认所有“查找”语句都是正确的,并正确更新检查的值。
摘要.js:
数据方法.js:
我可以确认网址没问题,只是暂时更换
测试设置:
当前的测试输出表明 global.open 没有被调用。我知道这是有道理的,因为它实际上并没有作为道具分配给按钮的 onClick 或任何东西。我认为这是我的问题之一 - 我不能直接为按钮分配存根,但我试图不重写我的代码以适应我的测试......
javascript - 使用 set 在父更新状态后测试子组件道具
我有一个以下功能组件,它将一些过滤后的数据发送到子组件。代码运行良好,即我可以运行应用程序并查看使用正确数据呈现的组件。但是我在下面写的测试失败了ChildComponent
。它不是获取具有过滤值的单个数组元素,而是获取所有三个原始值。我很困惑,FilterInputBox
因为道具组件的类似测试filterValue
正在通过。两个测试都在相同的事件过滤器输入更改后检查更新的道具值,即handleFilterChange
。我错过了什么吗?有什么建议吗?
源代码
测试代码
更新在放置一些日志语句后,我看到当我打电话时onChange
originalData
未定义。不知道为什么会这样,这似乎是问题所在。
如果有人对此有任何见解,仍在寻求帮助。