2014-01-06 2 views
4

카드 게임 인 Elixir 앱을 테스트 할 때 ExUnit을 사용하고 있습니다.엘 릭실 테스트 - ExUnit - 반복 데이터 인스턴스

내가 쓴 모든 테스트에서 나는 새로운 카드 덱을 만드는 것으로 시작한다는 것을 알았습니다.

test "Do This Crazy Thing do 
    deck = Deck.create() 
    [...] 
end 

test "Do This Other Crazy Unrelated Thing" do 
    deck = Deck.create() 
    [...] 
end 

모든 테스트 사례 전에 새로운 데크를 만들 수 있도록이 문제를 해결할 수있는 방법이 있습니까? setup do [...] end으로 뭔가가 있다는 것을 알고 있습니다.하지만 그게 나를위한 해결책이라고 생각하지 않습니다.

다른 테스트 프레임 워크가 필요합니까? 내가 아직 생각하지 못한 어떤 방법으로 setup을 사용해야합니까?

당신은 metadef setup을 사용할 수 있습니다

답변

9

-Augie 그냥이에 대한 있습니다.

예 :

defmodule DeckTest do 
    use ExUnit.Case 

    setup do 
    {:ok, cards: [:ace, :king, :queen] } 
    end 

    test "the truth", meta do 
    assert meta[:cards] == [:ace, :king, :queen] 
    end 
end 

Here's 좀 더 많은 정보를 원하시면

+1

같습니다 그것은 나를 위해 결국 그것은 내 작은 필요를 위해 시작했던 것보다 더 많은 타이핑과 반복 일 것입니다. 하지만,이 도구 키트에는 지금 필요한 때가 있습니다. 감사! – AugieDB

+0

게시 한 링크가 끊어졌습니다. – nietaki

+0

@nietaki 다음 링크 중 어느 것이 바람직하다고 생각하십니까? http://elixir-lang.org/docs/stable/ex_unit/ExUnit.Callbacks.html#summary 또는 http://elixir-lang.org/ 시작/mix-otp/docs-tests-and-with.html –

1

필요에 따라 일할 수있는 또 다른 옵션 : 당신이 제안대로 작동하지만 가치가 없어처럼

defmodule DeckTest do 
    use ExUnit.Case 

    defp cards, do: [:ace, :king, :queen] 

    test "the truth" do 
    assert cards == [:ace, :king, :queen] 
    end 
end