问题标签 [eunit]

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 回答
254 浏览

erlang - 为 gen_tcp 函数编写 Meck 测试用例

这是一个由 Erlang 编写的简单 IRC bot 模块: IRC Bot

有人可以帮我用 MECK 编写函数 connect 和 parse_line 的测试用例吗

非常感谢,我已经知道如何使用 MECK 编写一些关于输入/输出、列表的简单 Erlang 测试用例……但是这个 IRC 机器人似乎超出了我目前的能力。

0 投票
1 回答
512 浏览

unit-testing - 使用 eunit 启动依赖应用程序

当我运行单元测试时,我将 lager 作为依赖应用程序启动,但由于某种原因,被测代码看不到它。

这是日志的输出,它抱怨 未定义啤酒{undef,[{lager,info,["up and running"],[]}尽管在运行输出中肯定存在。

这是我的运行方式:

输出失败

已经在谷歌和堆栈溢出上花费了 3-4 小时,但似乎没有任何效果。

一种选择是将这个调用隐藏在 ?INFO(Mgs) 宏后面,但不喜欢这个想法。

任何帮助将不胜感激。

0 投票
1 回答
595 浏览

unit-testing - Erlang rebar,内核选项

我正在尝试编写简单的 erlang 应用程序,使用 rebar 作为 eunit 测试运行器。有没有办法将烦人的日志消息重定向到文件中,而不以编程方式进行?没有钢筋我可以说erl -kernel error_logger "{file,\"test.log\"}"这样做,但我怎么能用钢筋呢?

概括问题,有没有办法在运行测试时使用钢筋传递一些应用程序环境设置?

0 投票
1 回答
171 浏览

unit-testing - 如何在 erlang 中测试 gen_events?

我的大部分代码看起来像这样

上面的处理程序被调用为发布事件,它所做的只是向进程 ID 发送一条消息。

我想做的是创建一堆模拟 Pid,然后让这个事件处理程序向它们发送数据。并检查他们是否真的收到了数据。有什么办法可以用 EUNIT 做到这一点。还是有更好的方法来测试事件处理程序?

0 投票
1 回答
167 浏览

erlang - erlang:自动启动/停止应用程序进行测试

有一些功能可以对网页中的某些内容进行 html 解析。
我想为它写一些测试。在测试中,我将通过获取 html 内容httpc:request并将其传递给我的函数,最后进行结果验证。但是 http 客户端需要inets启动应用程序。在阅读了一些关于 EUnit 的文档后,我想出了下一段代码:

然后

输出是

UPDATE 问题是在拼写错误inets:start()

0 投票
2 回答
84 浏览

erlang - 当 EUnit 测试失败时,Dets 离开开放进程

我一直在玩 EUnit,这很好,但我遇到了问题另一个过程(当我运行测试时)。

你遇到过同样的问题吗?我可以有效地尝试在 EUnit 中捕获吗?

感谢您的任何意见!

0 投票
1 回答
829 浏览

erlang - 如果不包含根应用程序,Rebar eunit 会跳过所有应用程序测试

我的问题是如果不包括根应用程序,我就无法为单个应用程序或模块运行 eunit 测试。我的目录布局看起来有点像这样:

现在,我能做的是:

它为所有应用程序运行测试。另外,我可以这样做:

它运行 app1 的测试(我在 apps/app1 中也有一个 rebar.config。

但是,如果我尝试

什么也没做。没有输出。尝试详细模式给了我:

当我包含根应用程序时,它可以工作:

尽管事实上,我实际上想要测试app1,而不是rootapp,这真的很不舒服,因为SublimeErlSublimeText 2 的插件总是将应用程序设置为包含被测模块的应用程序。所以测试总是会失败,因为实际上没有测试将运行。

长话短说:我可以在任何 rebar.config 文件中配置一些东西,以便在/apps不包括根应用程序的情况下运行一个应用程序的测试吗?

0 投票
3 回答
1041 浏览

testing - eunit:如何测试一个简单的过程?

我目前正在为一个模块编写一个测试,该模块在一个以spawn_link(?MODULE, init, [self()]).

在我的 eunit 测试中,我定义了一个 setup 和 teardown 函数以及一组测试生成器。

设置乐趣创建了被测过程:

测试看起来像这样:

我的大多数模块都是 gen_server 但为此我认为没有所有 gen_server 样板代码会更容易......

测试的输出如下所示:

从 Pids 中,您可以看到运行 setup (117) 的任何进程与运行测试用例 (124) 的进程不同。然而,被测试的过程是相同的(122)。这会导致测试用例失败,因为接收端永远不会收到消息并且会超时。

这是 eunit 生成一个新进程来运行测试用例的预期行为吗?

一般来说,是否有更好的方法来测试进程或其他异步行为(如强制转换)?或者你会建议总是使用 gen_server 来拥有一个同步接口?

谢谢!

[编辑]

澄清一下,协议是如何知道这个过程的,这很start_link/0有趣:

该协议与调用者紧密相连。如果他们中的任何一个崩溃,我希望另一个也死。我知道我可以使用 gen_server 和 supervisors 并且实际上它在应用程序的某些部分中做到了,但是对于这个模块,我认为它有点过头了。

0 投票
4 回答
239 浏览

unit-testing - 使用 Eunit 测试集群应用的例子

我发现Eunit 上缺少关于如何测试多节点应用程序的文档。我找到了这个例子,但遗憾的是当我运行时:

我得到:

我在这里做错了吗?

作为旁注,我还在这里查看了 gproc 的分布式测试,但它是手动启动许多从节点,而不是使用内置的 Eunit 功能。

有人可以给我一些如何使用node测试夹具的例子吗?

谢谢,

0 投票
1 回答
95 浏览

erlang - 在 Erlang 模块中包含 EUnit 测试是否被认为是一种好习惯?

使用 EUnit 似乎有两种常见的方法:

  1. 在模块末尾包含测试本身
  2. 将测试添加到单独的“测试”路径

假设我只对测试特定模块的导出功能感兴趣,那么选择一种方法是否有任何优势或约定?