Привет всем, я просто новичок в Elixir, как правило, новичок в FP. В общем, я пытаюсь выучить Elixir и затем перейти к созданию api-сервера graphql.
Я прочитал и следую книге "Создание API-интерфейсов GraphQL в Elixir with Absinthe" и застрял при тестировании запроса graphql.
Вот что сказано в книге:
test "menuItems field returns menu items" do
conn = build_conn()
conn = get conn, "/api", query: @query
assert json_response(conn, 200) == %{
"data" => %{
"menuItems" => [
//key-value pair
]
}
}
end
Вот что я пытаюсь сделать, я заметил, что на моем локальном компьютере, когда я делаю запрос, он использует метод POST, а не метод GET, поэтому я заменяю его на post:
@query """
{
courses {
name
}
}
"""
test "courses field returns courses" do
conn = build_conn()
conn = post conn, "/api/graphiql", query: @query
assert json_response(conn, 200) === %{
"data" => %{
"courses" => [
%{"name" => "BSIT"},
%{"name" => "BSCS"},
%{"name" => "BSBA"}
]
}
}
end
Затем, когда я запускаю тест, он не проходит, потому что запрос возвращает пустой результат.
Assertion with === failed
code: assert json_response(conn, 200) === %{"data" => %{"courses" => [%{"name" => "BSIT"}, %{"name" => "BSCS"}, %{"name" => "BSBA"}]}}
left: %{"data" => %{"courses" => []}}
right: %{"data" => %{"courses" => [%{"name" => "BSIT"}, %{"name" => "BSCS"}, %{"name" => "BSBA"}]}}
stacktrace:
test/voting_system_web/query/course_test.exs:15: (test)
Затем я пытаюсь протестировать запрос с помощью curl, и запрос работает и возвращает результат.
curl -X POST -H "Content-Type: application/json" --data '{ "query": "{ courses { name } }"}' http://localhost:4000/api/graphiql
{"data":{"courses":[{"name":"BSIT"},{"name":"BSCS"},{"name":"BSBA"}]}}%