问题标签 [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.
elixir - ExUnit - 如何通过命名设置函数将上下文传递给描述块中的测试宏
查看 ExUnit 文档,您可以context
使用以下模式向结构添加属性:
但是在使用describe
宏块时,我们鼓励您使用以下形式为您的测试提供设置函数:
效果很好,但是没有提到在使用describe
宏和命名设置时如何将新属性添加到上下文结构以在测试中使用。
到目前为止,我已经尝试过(快速总结):
以这种方式为描述块创建设置函数时,实际上是否可以操纵测试套件上下文?
dependencies - 测试用例中的循环依赖
我在伞项目设置中有三个应用程序
- 数据层
- ApiLayer
- OtherLayer一些其他层(但必须)
现在我在混合文件 App ApiLayer中定义了这样的依赖项
App Datalayer不依赖于 App OtherLayer拥有的伞形应用程序
但是从应用程序ApiLayer调用的测试用例 需要调用 Datalayer 中定义的上下文,而Datalayer的上下文又需要访问 OtherLayer 的某些功能,但不能。因为如果我在Datalayer中添加它的依赖项。这将是循环依赖情况。我需要通过我的测试用例。有没有办法在不创建循环依赖的情况下加载一些代码块?任何帮助将不胜感激。谢谢
elixir - 在测试中强制哈克尼请求超时
我正在寻找一种能够在我的一个控制器测试中重现哈克尼 HTTP POST 请求超时的方法。我也在使用 ExVCR,但这似乎也不允许您强制请求超时。
我尝试在发出请求时将哈克尼超时设置为 1,但它超时,但我不想在测试中实际发出请求。
我愿意使用模拟/存根,但要确保我仍然可以在单元测试中使用 ExVCR,这些单元测试实际上向我正在集成的服务发出请求。我见过的所有模拟库和模式都为整个测试环境存根了整个模块,这不是我想要的。
这是我正在提出的请求的示例:
我希望这个返回{:error, :timeout}
,这是哈克尼在真正的超时场景中返回的。
elixir - ExUnit 使用 setup_all 块触发空错误
我有一个需要预先插入数据的测试。
所以我试图用setup_all
回调设置这些数据,因为这些数据可以设置一次。
由于我不想为上下文分配任何内容,因此我定义setup_all
如下
每个测试都有一个函数,它从创建的数据中获取一个结构。
例如,其中一项测试如下所示:
但是,region = get_region()
会触发空错误。为什么这个函数可以得到struct?IO.inspect
节目create_regions()
实际上创建了多个区域。我在这里错过了什么吗?
先感谢您。
input - ExUnit.CaptureIO 仍然等待多个 IO.read 调用的输入
考虑以下最小的 [?] 示例:
我确实查看了文档,它对ExUnit.CaptureIO
使用没有任何限制,但是前面列出的代码挂起,等待第一行输入,就好像它没有被输入一样。我错过了什么吗?
如果重要的话,我正在使用 Elixir 1.7.3。
unit-testing - 处理大型查询错误并发送 413 响应
我有一个语音笔记上传功能。我正在编写测试,作为其中的一部分,我为较大的文件编写了以下测试,我希望它抛出 413 Entity too large 错误:
测试失败了:
我还尝试将其添加到我error_view.ex
的列表中,希望它能够做出响应,但没有成功。如果我在错误的地方添加它有什么想法吗?
elixir - 我可以使用 ExUnit 和 Mix 将辅助模块拆分为不同的文件吗?
几次失败的尝试和这里的文档让我相信我必须在我的 mix 项目中嵌套在模块 (that ) 下test/test_helper.exs
的其他文件中或其中一个文件中定义帮助模块。有没有办法在他们自己的文件中定义这些模块,以便测试可以使用它们,而不会弄乱或将它们放在下面?test/*.exs
use ExUnit.Case
test/test_helper.exs
lib/
elixir - 在这个 ExUnit 测试运行器中,为什么在这里调用 ExUnit.Server.modules_loaded()?
因此,当使用 stale 选项运行 ExUnit 时,为什么要ExUnit.Server.modules_loaded()
调用此行?
我认为需要这条线Kernel.ParallelCompiler.require(test_files, parallel_require_callbacks)
来要求 ex_unit 测试文件能够并行运行。
我可以跟踪模块ExUnit.Server.modules_loaded()
中的源代码跟踪ExUnit.Server
,但我有点不清楚take_modules
函数调用的高级目的以及它为什么这样做?它似乎只是在更新GenServer
状态并进行某种回复……目的仅仅是确保模块已加载并存储“加载”的状态,以便程序员可以“窥视”该状态吗?
unit-testing - 如何在某些测试中隐藏日志但在其他测试中不隐藏?
背景
我有根据以下值记录消息的库disable_logging
:
根据MIX_ENV
我对每个设置的配置:
问题
这里的问题是我不希望在我的测试结果中到处都是日志消息。所以,很自然,我可以将其设置disable_logging
为 true 并完成它。
但是,如果我这样做,我无法测试是否正在调用 Logger 以及是否使用正确的值调用它:
问题
所以,鉴于此,我有一些问题:
- 有没有办法在我运行测试时激活日志但不将它们输出到终端?
- 有没有办法只为我的测试套件中的某些测试激活日志?
debian - 带有无头 Chrome 的 Wallaby 崩溃
我正在开发一个基于 Elixir 和 Phoenix 的应用程序,它还使用 Wallaby 应用程序在无头 Chrome 浏览器中进行基于 HTTP 的测试。
现在最近我在执行我的 ExUnit 测试时收到一个相当笨拙的错误消息:
我正在运行 Debian GNU/Linux 9 “Stretch”,并将 Elixir 作为.deb
1.8.0-1 版本的软件包安装在binaries.erlang-solutions.com
. 小袋鼠被锁定{:wallaby, "~> 0.21.0"}
。
关于如何解决这个问题的想法将不胜感激。