JSON响应的单元测试,与JSON响应匹配以声明键和值

时间:2019-01-07 20:30:49

标签: elixir phoenix-framework

如何测试JSON响应中的密钥。

目前我正在这样做:

  assert json_response(conn, 200) == %{
    "success" => true,
    "errors" => []
  } 

现在说我的JSON响应中还有另一个键和值,例如:

"user" : {id: 123, name: "john"}

我如何首先进行测试以确保密钥“用户”在我的响应中。 然后我怎么断言这个名字是“ john”?

1 个答案:

答案 0 :(得分:3)

您可以像这样拆分断言,尽管也可以将其合并为一个断言。

assert  %{
    "success" => true,
    "errors" => [],
    "user" => user
} = json_response(conn, 200)

assert %{
    "id" => _id,
    "name" => "john"
} = user

请注意模式在=之前的匹配方式。通常不需要进行相等性检查(==)。

此外,我可以在“ id”键上进行匹配,但该值将被忽略。当每个测试的id发生变化时,这将很有帮助。