问题标签 [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.

0 投票
1 回答
44 浏览

javascript - 每次测试前酶还原 getEelemenById

我存根getElementByIdbeforeEach并希望在另一个测试之前恢复它,并再次存根返回另一个值。因为现在我收到错误 TypeError: Attempted to wrap getElementById which is already wrapped

0 投票
0 回答
1185 浏览

javascript - 赛普拉斯错误:错误:无法从“/Users/stein/node_modules/parse5/lib/tokenizer”中找到模块“./preprocessor”

当我执行柏树测试时

对于产品的源代码

和产品库

然后我在 Cypress 错误中收到以下错误:无法从 >'/Users/stein/node_modules/parse5/lib/tokenizer' 找到模块 './preprocessor'

如何修复此错误?

0 投票
1 回答
1917 浏览

reactjs - 如何在 react-responsive 标签中测试 React 组件

<MyComponent>组件内部,我使用组件来区分渲染移动和桌面内容。react-responsive <MediaQuery>

我想测试 HTML 里面<MyComponent>render()using enzyme,但似乎无法深入到子元素<MediaQuery>

但是, Aconsole.log(wrapper.debug())表明内部没有任何<MediaQuery>内容被渲染。我猜在测试中(没有实际的浏览器)window.width没有设置导致<MediaQuery>组件不渲染任何东西。

我想做的事:

我希望能够<MyComponent>使用enzymewith react-responsive(或类似的东西,例如react-media)来测试移动和桌面视口的内容。

我尝试过的事情:

  • 通过使用enzyme's shallowwithdive()而不是 来规避这一点mount,但无济于事。
  • 使用react-media's<Media>而不是react-responsive's <MediaQuery>,默认情况下似乎设置window.matchMedia()为 true 。但是,这也不起作用。

console.log(wrapper.debug())显示:

0 投票
1 回答
44 浏览

javascript - 如何配置酶柴?

我想在柏树中使用酶柴。我的源代码看起来像这样 ProductList

产品

测试看起来像这样

配置文件如下所示:

执行测试 TypeError 时收到以下错误消息:expect(...).to.be.present is not a function 当我尝试https://github中描述的其他一些断言时收到类似的错误消息.com/producthunt/chai-enzyme#installation如何修复配置以便可以使用 chai-enzyme 断言?

0 投票
0 回答
178 浏览

reactjs - TypeError:无法读取未定义 chai.js 的属性“查找”

我在测试我的反应应用程序时遇到问题,错误说:TypeError: Cannot read property 'find' of undefined 这是代码:

0 投票
1 回答
114 浏览

javascript - 无法监视组件测试中的操作

我正在尝试使用 chai-spie 测试调度的操作。我尝试了各种故障排除技术,但无法通过测试。

我试图监视(component.prototype, 'method)and (wrapper.instance().props.store, 'dispatch'),但没有成功。

这是组件代码:

这是测试代码:

我希望调用间谍,但我不断收到此错误:

任何帮助将不胜感激。

0 投票
1 回答
2259 浏览

javascript - 如何测试 window.open 正在从反应组件中调用

我有一个反应组件,它呈现一系列其他组件,每个组件都有自己的复选框。

有一个名为 rulesToDownload 的状态钩子,它以一个空数组开始,并在选中/取消选中复选框时将 id 添加到其中/从中删除。

当点击“下载”按钮时,rulesToDownload 数组被传递给数据函数 DownloadFundDataById,forEach 在数组上,并为每个值调用 window.open,并带有附加 id 的 api 调用。数据函数被导入到组件中,而不是作为道具传入。

这会导致多个选项卡在数据下载时关闭之前闪烁。它并不完美,但它有效。

我想完成我的测试覆盖,并且需要测试该函数是否在按钮单击时被调用,并且它应该做它应该做的事情。

任何帮助表示赞赏。

下面的代码:

摘要.test.js:

我可以确认所有“查找”语句都是正确的,并正确更新检查的值。

摘要.js:

数据方法.js:

我可以确认网址没问题,只是暂时更换

测试设置:

当前的测试输出表明 global.open 没有被调用。我知道这是有道理的,因为它实际上并没有作为道具分配给按钮的 onClick 或任何东西。我认为这是我的问题之一 - 我不能直接为按钮分配存根,但我试图不重写我的代码以适应我的测试......

0 投票
0 回答
207 浏览

javascript - 使用 set 在父更新状态后测试子组件道具

我有一个以下功能组件,它将一些过滤后的数据发送到子组件。代码运行良好,即我可以运行应用程序并查看使用正确数据呈现的组件。但是我在下面写的测试失败了ChildComponent。它不是获取具有过滤值的单个数组元素,而是获取所有三个原始值。我很困惑,FilterInputBox因为道具组件的类似测试filterValue正在通过。两个测试都在相同的事件过滤器输入更改后检查更新的道具值,即handleFilterChange。我错过了什么吗?有什么建议吗?

源代码

测试代码

更新在放置一些日志语句后,我看到当我打电话时onChange originalData未定义。不知道为什么会这样,这似乎是问题所在。

如果有人对此有任何见解,仍在寻求帮助。