2016-08-04 4 views
1

얼룩에서 Meck이이 기능을 제공하는 것과 같은 방법으로 ExUnit Mock으로 일련의 반환 값을 모의 할 수 있습니까? 그렇지 않으면ExUnit 모의 시퀀스

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

, 성공적 같은 단위 테스트 ExUnit 비약 모듈에 메크 및 모의을 결합 할 수 있습니다?

답변

1

:meck.sequence에 대한 언급이 mock.ex에 없으므로 아직 지원되지 않습니다.

전화가 Mock.with_mock 전화 번호를 벗어나는 한 직접 :meck 기능에 전화를 걸면 문제가 없어야합니다. 완료 한 후에 :meck.unload/1 번으로 전화를 걸어야합니다. (모의가 이미 필요하기 때문에 async: false을 사용합니다.) 같은 테스트에서도 괜찮을 것입니다.

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