Elixir "mix test" 将@doc 示例视为测试
Elixir "mix test" considers @doc examples as tests
最近写了一个函数如下:
@doc """
Creates a new deck, shuffles its cards and retrieves a hand of
cards from it.
The `hand_size` argument indicates the size of the hand.
## Examples
iex> {hand, _deck_remainder} = Cards.create_hand 2
iex> hand
["Ace of Clubs", "Four of Hearts"]
"""
def create_hand(hand_size) do
create_deck
|> shuffle
|> deal(hand_size)
end
要考虑的要点:
create_deck/0
returns 一个字符串列表,如 ["Two of Clubs", "Four of Hearts"]
shuffle/1
获取字符串列表并使用 Enum.shuffle/1
对它们进行洗牌
deal/2
returns 像 {["Ace of Spades"], ["Five of Clubs"]}
这样的元组
然后我运行 mix test
任务出现以下错误:
ERROR
看起来混合测试正在将@doc 注释中的示例视为单元测试。
由于 shuffle/1
运行domly ar运行ges 列表中的字符串,示例(作为单元测试)崩溃。
我想从 mix test
中排除这些示例...这样做是个好主意吗?如果是这样,我该如何排除它们?
您可能复制了一些默认启用 doctests 的样板测试代码。喜欢:
defmodule MyModule.Test do
use ExUnit.Case, async: true
doctest MyModule
end
删除 doctest 位,你应该没问题。您当然也可以将评论格式化为看起来不像 doctest :-)
最近写了一个函数如下:
@doc """
Creates a new deck, shuffles its cards and retrieves a hand of
cards from it.
The `hand_size` argument indicates the size of the hand.
## Examples
iex> {hand, _deck_remainder} = Cards.create_hand 2
iex> hand
["Ace of Clubs", "Four of Hearts"]
"""
def create_hand(hand_size) do
create_deck
|> shuffle
|> deal(hand_size)
end
要考虑的要点:
create_deck/0
returns 一个字符串列表,如["Two of Clubs", "Four of Hearts"]
shuffle/1
获取字符串列表并使用Enum.shuffle/1
对它们进行洗牌
deal/2
returns 像{["Ace of Spades"], ["Five of Clubs"]}
这样的元组
然后我运行 mix test
任务出现以下错误:
ERROR
看起来混合测试正在将@doc 注释中的示例视为单元测试。
由于 shuffle/1
运行domly ar运行ges 列表中的字符串,示例(作为单元测试)崩溃。
我想从 mix test
中排除这些示例...这样做是个好主意吗?如果是这样,我该如何排除它们?
您可能复制了一些默认启用 doctests 的样板测试代码。喜欢:
defmodule MyModule.Test do
use ExUnit.Case, async: true
doctest MyModule
end
删除 doctest 位,你应该没问题。您当然也可以将评论格式化为看起来不像 doctest :-)