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

elixir - 使用 state[:pid] 传递消息失败,新生成的 pid 有效

我的第二次测试失败了。

流道模块:

该测试通过:

为什么 1 个测试(运行)与 setup 一起工作,而不是另一个(jump)?

0 投票
3 回答
1227 浏览

elixir - 如何在 channelcase phoenix 框架测试中清除邮箱

我正在做一个接收大量消息的通道测试。我可能会在设置过程中收到一条消息,调整一些状态,然后我想assert(或refute)发送该消息的另一个副本。我想我可以通过在引发将触发第二条消息的事件之前清除邮箱来做到这一点。如何清空channelcase邮箱?

编辑,我已经通过assert_push所有旧邮件完成了我的需求,这将它们从邮箱中清除了。这工作得很好,但如果消息多于几条,就会非常不方便

0 投票
1 回答
911 浏览

elixir - Elixir / Phoenix - 在测试运行的最开始运行代码,为所有测试共享数据

我想在我的测试套件的开头运行一段代码(将数据插入数据库!),并在整个测试套件中持续存在。

这样的事情可能吗?

我尝试在一个setup_all块中运行代码,但是:A)我尝试在此处插入数据库时​​失败了;B)这只会在该测试模块之间共享,而我希望它在所有测试中共享。

谢谢你的帮助!

0 投票
1 回答
802 浏览

elixir - 如何在 Elixir 中测试多行输出?

如何测试以下代码?

我的测试目前看起来像这样,但失败了,因为IO.puts返回:ok的是字符串,并且可能不包括完整字符串中的换行符。

也许IO.puts是这个用例的错误功能。如果是这样,我可以使用什么替代方案?

提前致谢。

0 投票
0 回答
491 浏览

elixir - 如何使用 Phoenix.ChannelTest.close/2 测试频道

我有一个启动套接字连接并订阅和加入主题的测试。然后我将一条消息推送到通道,该通道执行一些工作并保留一些数据。然后我在模拟客户端关闭连接的套接字上使用 ChannelTest.close/2。然后我想修改操纵的数据并创建另一个套接字连接来测试一些行为。

我的问题是 ChannelTest.close/2 导致我的测试失败并返回** (EXIT from #PID<0.558.0>) shutdown: :closed。我怎样才能防止这种情况发生?

这是一些相关的代码

按照评论中链接的答案,我添加了一些代码:

现在我收到一条不同的错误消息:** (exit) exited in: GenServer.call(PlexServer.EmpireSupervisor, {:terminate_child, :empire4}, :infinity) ** (EXIT) no process

0 投票
1 回答
1648 浏览

elixir - ExUnit - 在所有测试之前运行一次数据库设置代码

早上好,

我的 Elixir 项目中有一些特别昂贵的数据库设置代码,可将所需数据插入数据库。

@tag :insert_my_data我目前有我的测试工作,以便在通过构造需要它的任何测试之前插入此数据。我的测试助手中有代码,它执行以下操作:

这样做的问题是我必须运行此代码数百次,而且速度很慢。

如果代码在任何调用之前自动运行一次mix test,并且 Ecto 提供的事务回滚功能将重置为这个已知状态(而不是空数据库),那么效果会更好。

我怎样才能做到这一点?

谢谢!

0 投票
0 回答
57 浏览

elixir - 如何测试将一种文件类型转换为另一种文件类型的函数

我正在开发一个小型 escript 应用程序,它将电子书格式(.pdf, .epub)转换.mobi为在 Kindle 上使用的格式,我想知道如何(使用 ExUnit)在不实际运行代码的情况下测试转换是否成功真实文件并生成新的转换文件。

现在脚本只是遍历目录的内容并.mobi通过调用Calibre包将适当的文件转换为,尽管稍后我想自己进行转换。

0 投票
3 回答
3162 浏览

elixir - 如何在 IEx 中运行 ExUnit 测试

我正在尝试IEx.pry在测试中启动。但是我无法在 iex 会话中运行测试。请注意,我没有使用混合。

我尝试ExUnit.run挂起运行它并最终超时:

代码已正确加载,我可以直接使用TheTest."test adds two numbers"({}). 但我希望这样做会启动整个套件。

0 投票
1 回答
711 浏览

elixir - 伞中集成测试 Web 应用程序的问题

我正在开发凤凰应用程序。此应用程序是伞形应用程序的一部分。在这个保护伞中,我有一些小型应用程序负责应用程序的不同区域,它们是:

  • 凤凰网 api(“api”)
  • 核心业务逻辑(“核心”)
  • 用户认证(“auth”)
  • 数据库模式(“db”)

“api”依赖于“core”和“auth”,而这两个应用程序依赖于“db”。

只有“db”应用程序有一个ecto repo,所有其他应用程序都没有。回购由“db”应用程序启动并受到监督。

现在我想在“api”应用程序中测试我的控制器。这就是我遇到 ecto 问题的地方。当我测试一个控制器动作时,这个动作将从“auth”或“core”调用一个函数,它调用Repo“db”的函数(例如Repo.insert/2)。这导致OwnershipError

我现在的问题是我不知道如何使用“api”测试中建议的解决方案修复此错误,因为“api”应用程序不知道“db”应用程序,因此无法进行连接检查。当我在直接依赖于“db”项目的应用程序上遇到此错误时,我能够应用“共享模式”解决方案。

我的问题是如何通过“api”集成测试解决所有权问题。

0 投票
1 回答
734 浏览

elixir - 为 ExUnit 和 iex 提供固定装置和测试帮助功能

我正在编写一个我想测试的项目,既可以使用 ExUnit 自动测试,也可以与 iex 交互。假设我的项目如下所示:

我现在可以运行混合测试,它会找到fixtures/complex_struct.exs 以便测试成功执行。我也喜欢使用以下命令调试我的代码

这样我就可以访问 lib/the_function.ex 并对其进行调试。

但是我无法访问fixtures/complex_struct.exs,除非我像这样加载它:

什么决定了 iex 加载的内容,以及当我运行 iex -S mix 时,如何使 lib 中的所有模块和所有固定装置可用?