问题标签 [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 投票
4 回答
95468 浏览

reactjs - 如何使用 react+enzyme 选择元素文本

正是它所说的。一些示例代码:

html方法还返回元素的内容以及元素本身以及所有属性,例如它给出的<button class='btn btn-primary'>OK</button>。所以我想,最坏的情况,我可以调用html它并对其进行正则表达式,但是......

有没有办法只获取元素的内容,所以我可以断言它。

0 投票
1 回答
953 浏览

javascript - 使用 Enzyme/Mocha 进行反应测试 - 未定义音频

我正在尝试为我的反应应用程序构建一个测试套件。应用程序中的组件使用Audio

它在浏览器中有效,但据此不在 node.js 上。因此,当我使用酶尝试渲染组件时,会出现错误:

我是测试新手,但有没有办法解决这个问题?我可以以某种方式模拟一个对象来Audio代替吗?我是 font-end/javascript 单元测试的新手,所以我仍在尝试学习技巧。

0 投票
3 回答
10706 浏览

javascript - React Enzyme - 测试 `componentDidMount` 异步调用

每个人。

componentDidMount.

这是我的组件代码:

现在,我在测试文件中做了什么(我有一个由 Mocha + Chai + Sinon 组成的设置,一切正常):

update()即使我调用包装器,状态也不会更新。长度仍为 0。我在这里遗漏了什么吗?我是否需要以另一种方式模拟服务器响应?

谢谢你的帮助!

0 投票
2 回答
3527 浏览

reactjs - Enzyme/Mocha:如何通过从子组件触发 onChange 事件来测试反应组件功能

我正在使用酶/摩卡咖啡来测试我的反应成分。

我有一个正在测试的父组件。

这个父组件在它的渲染函数中有一个子组件

我希望孩子的 onChange 函数触发,以便我可以测试我父母的 foo 函数。

到目前为止,我还没有找到办法做到这一点——我读过关于 sinon 和 stubbing 的文章,但这主要是关于拦截函数而不是触发它们。

下面的测试

是一个弱测试,因为它不会测试连接我的孩子和父母的代码行,并且如果我没有为我的孩子编写单元测试,它也不会测试孩子的 onChange 功能。恕我直言 - 如果将我的组件分解给父母/孩子意味着更少的可测试性 - 那么这个框架有问题

任何帮助将不胜感激,谢谢

0 投票
0 回答
95 浏览

javascript - 转译 JSX 以用于 InternJS 测试

我正在为我们的应用程序实施(或尝试实施)单元/功能测试,并希望使用InternJS作为带有测试实用程序的测试运行器。

要对我们的组件进行单元测试,需要对 JSX 进行转译。Intern 文档包含一个 React 示例,但随着 JSXTransformer 的弃用,该示例不再相关。

所以我尝试通过SystemJS 插件使用 Babel,systemjs-plugin-babel并使用了推荐的loader配置。

当我运行测试时,会发生以下错误:

从测试中删除 JSX 表明该错误与测试中的 JSX 有关。

是否可以使用 Intern 和 Enzyme 来测试 React 组件?如果是这样,您如何配置 Intern 以准备组件进行测试?

0 投票
1 回答
2410 浏览

reactjs - 使用酶测试反应确认窗口

我在 React 中有一个按钮,当用户点击它时会打开一个简单的确认窗口。在我添加确认方法之前,下面的测试是绿色的。添加确认后它是红色的。我需要如何更改测试以使用附加确认?

反应删除按钮:

这是测试(使用酶):

0 投票
0 回答
227 浏览

javascript - 测试连接容器的实例方法

您好,我有一个连接的仪表板容器。它有一个孩子,它是一个连接的 redux-form。我想测试仪表板容器实例方法。我知道我可以将仪表板包装在 Provider 中以将商店传递给子组件。但是然后我无法访问 wrapper.instance().someInstanceMethod() (因为我将 Provider 安装为 root 而不再是仪表板。有没有人处理过这个问题并提出了解决方案?

根据我得到的错误消息,我可以明确地将商店作为道具传递,但这不起作用。也不是将它作为第二个参数传递给包装为上下文。也许我错过了一些东西。下面是一个不起作用的示例测试,但它给出了我试图做什么的总体思路。

0 投票
2 回答
1023 浏览

javascript - 使用 Enzyme 的 React 单元测试不会重新绑定辅助函数的上下文

这是我在尝试使用 AirBnB 的 React 测试库Enzyme重构我的一些 React 组件时遇到的一个有趣的问题。

我认为解释我的问题的最好方法是通过一个例子。

这是一个小的 React 组件,它将根据从其父组件接收到的 props 显示一条消息:

测试.js:

这是该组件的测试套件,其中包含两个通过测试:

test.spec.js:

这可以正常工作,但 Test 组件的当前实现并没有达到应有的效率。通过使用.call(this),每次render()调用函数时都会创建一个新函数。this我可以通过在组件的构造函数中绑定正确的上下文来避免这种情况,如下所示:

进行此更改后,组件仍按预期工作,但测试开始失败:

console.log(props.foo)在构造函数中添加了一个,它确认构造函数在我期望的时候仍然被调用,并且它接收的道具是正确的。但是,我添加了一个console.log(foo)inside renderInnerSpan,并且看起来该值始终为 true,即使在重新渲染组件并将其fooprop 明确设置为false.

看起来renderInnerSpan只绑定一次,Enzyme 在每次测试中都重复使用它。那么,什么给了?我正在测试中重新创建我的组件,它使用我期望的值调用它的构造函数 - 为什么我的绑定renderInnerSpan函数继续使用旧值?

在此先感谢您的帮助。

0 投票
2 回答
1336 浏览

testing - 酶测结果为 null 不是对象

我刚刚开始使用 Enzyme 和 React,我有点困惑。我有一个不需要 React 的简单测试通过。

src/containers/App/App.spec.js

npm test

现在我想对我的 App 组件进行基本测试,看看它是否呈现为一个 div [当我在浏览器中加载它时它会这样做]。这就是失败发生的地方。

src/containers/App/App.spec.js

npm test

我想知道是什么导致了null is not an object错误。这让我觉得我们期待某物成为一个App对象,但事实并非如此?

这是呈现浏览器的实际应用程序:

渲染

src/containers/App/App.js

src/app.js

仅供参考,我的package.json

0 投票
2 回答
7774 浏览

javascript - 用酶测试 React Component className

在测试使用 className 使用酶(安装或浅)设置 css 类的反应组件时,我能够在它是 div 时正确测试,但无法让它在 h1 标签上工作。

这是一些

  • 与安装或浅的事情有关?
  • 这是我想念的东西吗?
  • 它是一个错误吗?

任何想法表示赞赏!

JSX:

规格:

试验结果:

请注意调试日志,其中显示了带有 myheader 类的 h1,但测试失败,为 h1.myheader 找到零个元素