4

我正在使用 ExUnit 测试我的 Elixir 应用程序,这是一款纸牌游戏。

我发现每次编写测试时,我都会从创建一副新的纸牌开始。

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我还没有想到的方式使用吗?

-奥吉

4

2 回答 2

9

您可以为此使用 has def setupmeta

例子:

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

这里有更多信息

于 2014-01-06T05:28:19.640 回答
1

另一个可以根据您的需要工作的选项:

defmodule DeckTest do
  use ExUnit.Case

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

  test "the truth" do
    assert cards == [:ace, :king, :queen]
  end
end
于 2015-07-04T08:25:22.417 回答