我有一个带有少量应用程序的中型版本。我最近在发行版中将一些常见功能重构为库应用程序。undef
这使我的 EUnit 测试在测试任何需要库应用程序的东西时 失败并显示消息。
设置是这样的:
% In apps/utils/src/utils.erl
-module(utils).
-export([foo/0]).
foo() -> "OH HAI".
然后
% In apps/some_app/src/some_app.erl
-module(some_app).
-export([bar/0]).
bar() -> io:format("foo: ~s~n", [utils:foo()]).
% unit tests for bar()
然后单元测试some_app:bar()
失败。我正在运行它们rebar eunit skip_deps=true
。我正在使用skip_deps=true
,因为我的版本使用了一些 3rd 方应用程序(SQL 等)。
我假设测试开始失败是因为 EUnit 在没有依赖关系的情况下调用被测应用程序?有没有什么办法解决这一问题?我已将 .app 文件配置为显式声明依赖项。它在发行版中运行良好,并且已经部署了大约一天,没有问题,但如果我能让测试再次通过,我会感觉好多了:)
(我可以使用一个模拟应用程序来存根utils:foo/0
,我可以看到这在哪里是理想的惯用语,但在这种情况下这似乎有点矫枉过正,因为utils:foo/0
(阅读:它是现实世界的对应物)做了一些非常简单的事情。)