Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir ExUnit模拟序列_Elixir_Ex Unit - Fatal编程技术网

Elixir ExUnit模拟序列

Elixir ExUnit模拟序列,elixir,ex-unit,Elixir,Ex Unit,是否可以像meck在Erlang中提供此功能一样,使用ExUnit mock模拟返回值序列 ... meck:new(my_module), meck:sequence(my_module, method, 1, [Response1, Response2]), meck:unload(module), ... 如果没有,是否可以在同一个单元测试ExUnit Elixir模块中成功地结合meck和mock?中没有提到:meck.sequence,因此我猜这还不受支持 直接调用:meck函数应该

是否可以像meck在Erlang中提供此功能一样,使用ExUnit mock模拟返回值序列

...
meck:new(my_module),
meck:sequence(my_module, method, 1, [Response1, Response2]),
meck:unload(module),
...

如果没有,是否可以在同一个单元测试ExUnit Elixir模块中成功地结合meck和mock?

中没有提到
:meck.sequence
,因此我猜这还不受支持

直接调用
:meck
函数应该可以,只要它在
Mock.with_Mock
调用之外,并且确保在完成后调用
:meck.unload/1
。(并且您使用
async:false
,正如Mock已经要求的那样。)即使在相同的测试中,这也应该可以

test "the truth" do
  url = "http://www.google.com"

  :meck.new(HTTPoison)
  :meck.sequence(HTTPoison, :get!, 1, [%{body: "foo"}, %{body: "bar"}])
  assert HTTPoison.get!(url).body == "foo"
  assert HTTPoison.get!(url).body == "bar"
  assert HTTPoison.get!(url).body == "bar"
  :meck.unload(HTTPoison)

  assert HTTPoison.get!(url).body =~ "HTML"

  with_mock HTTPoison, [get!: fn(_url) -> %{body: "baz"} end] do
    assert HTTPoison.get!(url).body == "baz"
  end

  assert HTTPoison.get!(url).body =~ "HTML"
end
演示:

$ mix test
.

Finished in 0.2 seconds
1 test, 0 failures