我如何编写一个 Elixir doctest 来验证一个空的 MapSet
How do I write an Elixir doctest to verify an empty MapSet
刚刚了解 Elixir 中的 doctest,我正在尝试编写一个 Elixir doctest 来验证一个结构将包含两个空的 MapSet。
defstruct [:coordinates, :hit_coordinates]
@doc """
Creates a new Island structure
## Examples
iex> IslandsEngine.Island.new()
%IslandsEngine.Island { coordinates: #MapSet<[]>, hit_coordinates: #MapSet<[]> }
"""
def new(), do:
%Island{ coordinates: MapSet.new(), hit_coordinates: MapSet.new() }
当我 运行 使用 mix test
时,出现以下错误:
Compiling 1 file (.ex)
1) doctest IslandsEngine.Island.new/0 (1) (IslandsEngine.IslandTest)
test/islands_engine/island_test.exs:3
Doctest did not compile, got: (TokenMissingError) lib/islands_engine/island.ex:19: missing terminator: } (for "{" starting at line 19)
code: %IslandsEngine.Island { coordinates: #MapSet<[]>, hit_coordinates: #MapSet<[]> }
stacktrace:
lib/islands_engine/island.ex:19: IslandsEngine.Island (module)
.......
Finished in 0.1 seconds
6 doctests, 2 tests, 1 failure
但所有 运行 在 IEx 会话中都很好:
iex> IslandsEngine.Island.new()
%IslandsEngine.Island{coordinates: #MapSet<[]>, hit_coordinates: #MapSet<[]>}
iex>
感谢您的帮助!
你需要用代码来构造一个有效的答案,而不是你的 doctest 中的文本表示。所以代替:
%IslandsEngine.Island{coordinates: #MapSet<[]>, hit_coordinates: #MapSet<[]>}
做:
%IslandsEngine.Island{coordinates: %MapSet{}, hit_coordinates: %MapSet{}}
我想在这种情况下,该示例作为测试的价值不大,因为它只是复制了代码,但它作为文档可能仍然有效。
刚刚了解 Elixir 中的 doctest,我正在尝试编写一个 Elixir doctest 来验证一个结构将包含两个空的 MapSet。
defstruct [:coordinates, :hit_coordinates]
@doc """
Creates a new Island structure
## Examples
iex> IslandsEngine.Island.new()
%IslandsEngine.Island { coordinates: #MapSet<[]>, hit_coordinates: #MapSet<[]> }
"""
def new(), do:
%Island{ coordinates: MapSet.new(), hit_coordinates: MapSet.new() }
当我 运行 使用 mix test
时,出现以下错误:
Compiling 1 file (.ex)
1) doctest IslandsEngine.Island.new/0 (1) (IslandsEngine.IslandTest)
test/islands_engine/island_test.exs:3
Doctest did not compile, got: (TokenMissingError) lib/islands_engine/island.ex:19: missing terminator: } (for "{" starting at line 19)
code: %IslandsEngine.Island { coordinates: #MapSet<[]>, hit_coordinates: #MapSet<[]> }
stacktrace:
lib/islands_engine/island.ex:19: IslandsEngine.Island (module)
.......
Finished in 0.1 seconds
6 doctests, 2 tests, 1 failure
但所有 运行 在 IEx 会话中都很好:
iex> IslandsEngine.Island.new()
%IslandsEngine.Island{coordinates: #MapSet<[]>, hit_coordinates: #MapSet<[]>}
iex>
感谢您的帮助!
你需要用代码来构造一个有效的答案,而不是你的 doctest 中的文本表示。所以代替:
%IslandsEngine.Island{coordinates: #MapSet<[]>, hit_coordinates: #MapSet<[]>}
做:
%IslandsEngine.Island{coordinates: %MapSet{}, hit_coordinates: %MapSet{}}
我想在这种情况下,该示例作为测试的价值不大,因为它只是复制了代码,但它作为文档可能仍然有效。