例如,
[x_test.exs]
def setup do
:meck.new(Hoge, [:passthrough])
on_exit(fn -> :meck.unload end)
:ok
end
def teardown do
:meck.unload
end
test "foo" do
:meck.expect(Hoge, :foo, fn -> 1 end)
assert Hoge.foo == 1
end
[y_test.exs]
def setup do
:meck.new(Hoge, [:passthrough])
on_exit(fn -> :meck.unload end)
:ok
end
def teardown do
:meck.unload
end
test "foo" do
:meck.expect(Hoge, :foo, fn -> 2 end)
assert Hoge.foo == 2
end
有时,x_test.exs会失败,但有时候,x_test.exs会成功... (y_test.exs相同)
我可以在另一个测试文件中使用mock到同一个函数吗?
答案 0 :(得分:2)
meck
目前正在编译并加载您使用期望指定的代码。由于只有一个当前版本的代码可以加载到梁内,因此您应该执行所有依次为同一个模拟函数竞争的测试。
由于ExUnit文档声明测试用例是并行执行的,因此您可能必须合并所有应在单个测试用例中串行执行的测试(即单个测试模块)。
或者,您可以将可以并行执行的测试用例数设置为1.但是它可能会减慢您的测试运行速度
ExUnit支持以下选项:
:max_cases
- 并行运行的最大案例数;默认为:erlang.system_info(:schedulers_online)