问题标签 [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 回答
941 浏览

elixir - 如何测试 Ecto 迁移

我最近在 Phoenix 应用程序中编写了一些 Ecto 迁移。
但是,我总是手动测试迁移。

随着我们的迁移变得越来越复杂并且需要更改我们实时系统上的数据,我真的很想在部署它们之前编写自动化测试。

自动测试需要:

  1. 将数据库重置到迁移之前的某个点
  2. 运行比要测试的迁移更早的迁移
  3. 准备数据并将其插入数据库
  4. 运行迁移
  5. 验证结果是否符合预期
  6. 清理数据库以确保即将进行的测试不会与数据冲突

我们正在使用 ExUnit 和 ESpec,但我还没有找到一种方法来仅在特定测试之前应用一些迁移。

有没有办法为 Ecto 迁移编写自动测试?

0 投票
1 回答
336 浏览

elixir - Phoenix + ExUnit:我应该在哪里定义全局助手?

我使用 Phoenix + ExUnit 进行测试。

我有一些ExUnit.Case文件喜欢DataCase, ConnCase...为 my 定义测试助手Models, Controllers...,但是如果我需要定义一个全局助手,它可以从我的所有测试中访问,我应该在哪里定义它?

0 投票
1 回答
129 浏览

testing - 如何为 escript 项目在 elixir 中编写 ExUnit 测试用例

我在 Elixir 中使用 mix 完成了一个 escript 项目。该项目有两个或三个 .ex 文件,需要使用“escript”命令使用某些参数执行它就像一个基于客户端服务器的项目,其中一个 escript 运行,启动服务器(继续运行)和另一个 escript 运行(在另一个终端中)连接到服务器并执行操作。

如何使用 ExUnit 编写测试脚本(并使用 mix run test 运行)并在启动服务器后调用测试文件中的客户端函数。?

0 投票
2 回答
75 浏览

elixir - 检查所有测试文件是否可编译

当我需要检查我的应用程序测试套件中的所有文件是否可编译时,我有一个案例。

我正在尝试创建所有文件的列表,然后编译它们,但事实证明,如果不启动 ExUnit,我就无法做到这一点。

如何在不实际运行测试的情况下检查所有测试文件是否可编译?

0 投票
1 回答
112 浏览

elixir - 如何将信息添加到 ExUnit 的输出以应对失败的测试

我的测试 ExUnit.Callbacks.setup函数会创建一个 ID,当测试失败时我想将其包含在 ExUnit 的输出中。有没有一种简单的方法可以做到这一点?我知道我可以编写一个自定义的 ExUnit.Formatter,但这似乎有点矫枉过正。

这个问题的背景是我正在使用 ExUnit 来帮助编写不是单元测试而是跨多个微服务的集成测试。该setup函数生成的 ID 是跨微服务持续存在的 Spandex 跟踪 ID。当测试失败时,我想知道它的跟踪 ID 是什么,以便我可以为该 ID 查找所有微服务的日志。

0 投票
1 回答
327 浏览

redis - Phoenix with exq:如何在不运行 redis 的情况下执行混合测试

我在 Phoenix 1.4.16 的 Phoenix 应用程序中使用 exq 来运行一些后台作业。

其中之一可以像这样简单:

它在开发环境中完美地与redis一起运行。

问题是当我将代码推送到没有 redis 的 CI 服务器时,所有测试都失败了。

测试配置是这样的

config/test.exs 中

test/test_helper.exs 中

当我在没有运行 redis 的机器上运行“混合测试”时,它会像这样失败:

实际上我尝试了所有 3 种模式:redis:fake:inline,但它们都无法启动混合测试。

问题:我可以在没有 redis 的机器上运行“混合测试”吗?

原因是我们公司不想在Travis CI机器上安装redis。

我希望在测试环境中使用 Exq Mock 可以让测试在没有 redis 的情况下运行,但事实并非如此。

0 投票
0 回答
83 浏览

erlang - 为 Wallaby 或 ExUnit 配置重试

目前我正在开发浏览器测试,但有时它们很不稳定,所以我想为这些测试添加重试,Idk 如果有一种简单的方法可以通过配置向带有 Wallaby 和 ExUnit 的项目添加重试,或者如果有一个库在那里。谢谢

0 投票
2 回答
57 浏览

elixir - 如何在 elixir 上将测试结果发送到另一个地方

当我运行 mix test 时,我将所有结果都返回到 shell 中。我怎样才能将结果发送到更多的地方,如松弛、文件等。

0 投票
1 回答
570 浏览

elixir - Ecto 断言#Ecto.Association.NotLoaded

我通常检查我的测试是否返回预期结果,如下所示:

但这失败了

推荐的处理方法是什么?我显然想避免在测试中预加载关联,因为这样可以避免检查它们没有预加载的事实Profile.get_company!/1

0 投票
1 回答
317 浏览

elixir - 使用受监督的过程防止 exunit 测试中的“GenServer terminating”错误

我在我的 Phoenix 应用程序中有一个测试,它正在测试Phoenix.PubSub使用 Genserver 的订阅者。订阅者将一些数据库工作作为其handle_info/2.

单独运行这个测试模块就可以了。然而,当我运行我的整个测试套件时,我得到一个这样的错误(测试仍然通过):

这看起来是一个问题,当进程终止时数据库连接仍然处于打开状态,因此它不会优雅地死掉。但我不确定如何处理这个问题。

有关如何防止此错误的任何建议?