在执行时ExUnit.start
,在每种情况下,我都会meck
像下面这样准备模拟
defmodule MyModule.FooTest do
use ExUnit.Case, async: false # explicitly sync
import :meck
alias MyModule.Foo
alias MyModule.Baz # to be mocked
test "call_baz" do
expect(Baz, :some_async_method, [
{[], :meck.val(Task.async(fn -> %{"name" => "otiai10"} end)},
])
assert Foo.call_baz() == %{"name" => "otiai10"}
end
end
但它会返回{"name" => "otiai200"}
,因为Baz.some_async_method
被另一个测试嘲笑为返回{"name" => "otiai200"}
。
这肯定是在另一个测试用例中嘲笑的反应。(他们在声明中也有async: false
选择权use
)
什么问题,async: false
选项不起作用?还是Task.async
不推荐嘲笑?还是我犯了任何基本错误?
谢谢