在测试中访问参数

时间:2017-02-06 16:47:06

标签: testing elixir phoenix-framework ecto

我正在尝试测试当我有查询参数时,我会根据该参数返回正确的内容。

我试过了:

test "find_tags returns tips with the correct tag type" do
  post = fixture(:post)
  tip = Post |> Post.find_tags("tag", "connect"}) |> Repo.all
  assert String.contains? tip.content, "#connect"
end

但是我收到了错误。我不确定这是否是访问参数的正确方法,或者是否还有其他任何我缺失的内容。

1 个答案:

答案 0 :(得分:2)

问题出在两个方面。最终的工作测试是:

test "find_tags returns tips with the correct tag type" do
  post = fixture(:post)
  tip = Post |> Post.find_tags(%{"tag" => "connect"}) |> Repo.all |> List.first
  assert String.contains? tip.content, "#connect"
end

传入的参数需要采用%{"tag" => "connect"}格式而不是{"tag", "connect"}格式。这是在localhost上访问该页面时直接从终端中列出的参数中获取的。

使用tip时,Repo.all是一个无效的其他部分,因此可以通过List.first中的管道访问该结构。如果没有这个,tip.content不是字符串,并且存在参数错误。