问题标签 [ex-unit]

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 投票
2 回答
270 浏览

elixir - 将 ExUnit 中的测试标记为待处理

我正在寻找一种将用 ExUnit 编写的测试标记为待处理的方法。

我知道我可以通过标签跳过测试,但是我正在寻找一种跳过测试的方法,这种方式可以高度透明地显示这些测试已被跳过,因为它们需要被实现。其他测试框架如 RSpec 或 ESpec 将这些标记为黄色并在每次运行时突出显示它们。

ExUnit中有这样的功能吗?

0 投票
1 回答
131 浏览

cucumber - Cabbage 中的隔离场景

我正在自动化使用 Elixir 用 Gherkin 编写的规范中定义的验收测试。一种方法是使用名为Cabbage的 ExUnit 插件。

现在 ExUnit 似乎提供了一个setup在任何单个测试之前运行的setup_all钩子和一个在整个套件之前运行的钩子。

现在,当我尝试通过重置setup挂钩中的持久性来隔离我的 Gherkin 场景时,似乎在执行每个步骤定义之前都会清除持久性。但是 Gherkin 中的一个场景几乎总是需要多个步骤来构建测试环境并以固定的顺序执行测试。

另一方面,另一个选项setup_all钩子会为每个特性文件重置一次持久性。但是 Gherkin 中的功能文件几乎总是包含多个场景,理想情况下它们应该完全相互隔离。

因此,上述钩子似乎允许我隔离单个步骤(我认为这毫无意义)和整个功能文件(远非最佳)。

有什么方法可以隔离每个场景吗?

0 投票
3 回答
805 浏览

automated-tests - 在第一个未通过的测试中中止 ExUnit

在 Ruby 中,特别是 RSpec,您可以告诉测试运行器在第一个未通过命令行标志的测试时中止--fail-fast。这有助于在连续修复大量测试时不浪费时间或失去注意力,例如在进行测试驱动或行为驱动开发时。

现在在带有 ExUnit 的 Elixir 上,我正在寻找一种方法来做到这一点。有没有办法做到这一点?

0 投票
2 回答
731 浏览

elixir - 如何测试 Elixir GenStage Consumer?

我找到了一些关于如何测试生产者的资源,但是我找不到任何东西来显示如何测试消费者。

在生产者中,我创建了一个虚拟消费者并且一切正常,但是在消费者中我正在努力进行测试。

生产者测试:

和消费者:

提前谢谢你。

0 投票
0 回答
91 浏览

elixir - 在运行结束时列出失败的 Elixir 测试

每当有多个失败时,我发现很难滚动查看详细输出并找到失败的测试。

有没有办法在测试套件运行结束时列出所有失败的测试?

实际的

预期的

0 投票
1 回答
208 浏览

elixir - 使用 ExUnit 检查状态代码失败,但实际 REST 测试成功

我正在编写一个控制器函数,如果失败,它将在呈现 json 对象或错误对象之前检查条件(关键字是否有效)。

路由器.ex

word_controller.ex

word_controller_test.ex

运行mix test时,结果会是这样的:

但是当我尝试使用 REST 客户端(例如 Insomnia)进行测试时,json 将恢复{ error : "Invalid keyword" }正常。

0 投票
1 回答
578 浏览

elixir - 在 Elixir 中,将测试文件与相关模块放在一起

一个典型的 Elixir 项目有这样的结构:

在编写节点项目时,我喜欢将我的测试模块放在他们正在测试的模块旁边。这可以使用 Jest 等工具轻松配置:

是否可以在 Elixir/Exunit 中进行类似的设置?

0 投票
0 回答
155 浏览

testing - 如何在 ExUnit doctest 中有多个断言

我正在尝试在文档中编写我的大部分测试。它们形成了一组非常有用的文档。

一些测试的设置量适中,如果我可以在 doctest 中有几个断言,那将是最干净的。

我尝试了以下操作,但我收到关于我试图断言的第一个值的未使用文字的警告。

这是在此 PR https://github.com/CrowdHailer/raxx/pull/115的背景下完成的

0 投票
1 回答
631 浏览

elixir - 使用 ExMachina 插入后是否可以不加载关联?

我正在使用ex_machina为我的单元测试创​​建夹具。

我正在使用 ExMachina 将一些记录保存到数据库中,insert(:comment)但我的断言是错误的,因为 ExMachina 总是加载关系,而当我使用 Ecto 获取而不调用Repo.preload.

假设我有 2 家工厂comment,并且user

当我测试时

断言如果失败,因为在左边我有

在右边

我试图避免:

  • 在我左边的记录上使用Repo.preload,因为有时有很多依赖项

  • 单独测试每个属性

提前感谢您的帮助

0 投票
1 回答
249 浏览

elixir - 返回结构时编写文档测试

类似问题的答案有这个问题

为了使用 doctest 测试函数,您必须能够预测函数的输出。

问题

正如标题中提到的,我想坚持使用 doctest,但这似乎不起作用,我不相信没有办法做到这一点。

代码

以上是我一直在尝试的代码及其变体。例如_在数据将出乎意料的地方使用。只是那些不会改变的位。

例如,理想情况下,我希望返回值看起来像{:ok, %Elements.Setting{keyname: "an_example", _}. 所以文档通过了,但用户也可以阅读他们正在阅读的内容,并且可以看到之前代码的效果。

根据开头引用的答案,您可能会注意到,至少inserted_at: ...updated_at: ...将有所不同,这意味着测试将始终失败。

有什么可以做的,甚至有什么解决方法吗?