首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在文档测试中测试HashSets

在文档测试中测试HashSets
EN

Stack Overflow用户
提问于 2015-06-26 20:43:01
回答 3查看 144关注 0票数 4

我试图通过iex使用doctest测试HashSet。如果我运行下面的行,它会给出相同的结果,但是#HashSet<["rockerboo"]>}不能用语法表示。我想不出一种方法来正确地表达它,我也找不到任何例子。谢谢!

代码语言:javascript
运行
复制
  @doc """
  Adds user to HashSet in state

  ## Examples
      iex> Elirc.Channel.add_user_to_state("rockerboo", %{users: HashSet.new})
      %{users: #HashSet<["rockerboo"]>}
  """
  def add_user_to_state(user, state) do
    %{state | users: HashSet.put(state.users, user) }
  end

在运行mix test时,我会得到以下错误。

代码语言:javascript
运行
复制
 Doctest did not compile, got: (TokenMissingError) lib/elirc/channel.ex:99: missing terminator: } (for "{" starting at line 99)
 code: %{users: #HashSet<["rockerboo"]>}

第99行是%{state...

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-26 22:19:49

您可以以不同的方式构造您的HashSet,以便它是有效的Elixir表达式。例如,这对我起了作用:

代码语言:javascript
运行
复制
## Examples
  iex> Elirc.Channel.add_user_to_state("rockerboo", %{users: HashSet.new})
  %{users: ["rockerboo"] |> Enum.into(HashSet.new)}

这也是ExUnit.DocTest documentation在“不透明类型”下推荐的方法。

票数 5
EN

Stack Overflow用户

发布于 2015-06-27 09:13:19

Paweł的答案是正确的。另一种选择是“按摩”文档测试中的数据。例如,这样做是可行的:

代码语言:javascript
运行
复制
  iex> state = Elirc.Channel.add_user_to_state("rockerboo", %{users: HashSet.new})
  iex> state.users
  #HashSet<["rockerboo"]>

或者:

代码语言:javascript
运行
复制
  iex> state = Elirc.Channel.add_user_to_state("rockerboo", %{users: HashSet.new})
  iex> Enum.to_list(state.users)
  ["rockerboo"]

我扩展了Paweł链接的doctest部分,包括他的例子和我的例子:test.ex#L77

票数 4
EN

Stack Overflow用户

发布于 2015-06-27 04:31:44

那么,您的问题是,您试图表示一些不可能的东西,一个没有键或没有值的HashDict条目。HashDict.put(state.users, "rockerboo")将失败,因为put需要3个参数,一个HashDict、一个键和一个值。不过,假设您有类似于name: "rockerboo"的东西:

iex> %{users: Enum.into([name: "rockerboo"], HashDict.new)} %{users: #HashDict<[name: "rockerboo"]>}

上述工作如预期的那样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31081845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档