JSON 响应的单元测试,匹配 JSON 响应以断言键和值

Unit test for JSON response, matching against the JSON response to assert for keys and value

如何测试我的 JSON 响应中的键。

目前我正在这样做:

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

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

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

我如何首先测试以确保密钥 "user" 在我的响应中。 如果名字是 "john" 我怎么能断言?

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

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

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

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

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