首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >** (Phoenix.Router.NoRouteError)没有为GET /fake (MyApp.Router)找到路由

** (Phoenix.Router.NoRouteError)没有为GET /fake (MyApp.Router)找到路由
EN

Stack Overflow用户
提问于 2022-05-19 22:08:31
回答 1查看 228关注 0票数 0

最近,我一直在更新一个遗留的回购。我不得不更新Erlang、Elixir、凤凰和许多依赖项。回购很可能会在不久的将来被废弃,所以我尽量避免做太多的重构,尽管这可能是必要的。我目前有一个测试失败了,我不知道如何解决这个问题。

测试检查我的404.html模板在到达不存在的路由时是否呈现。

测试:

代码语言:javascript
运行
复制
  test "renders 404.html" do
    conn = get build_conn(), "/fake"
    assert html_response(conn, 404) ==
      "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <meta name=\"description\" content=\"\">\n    <meta name=\"author\" content=\"\">\n    <link rel=\"stylesheet\" href=\"http://localhost/css/index.css\">\n    <title>404 - Page Not Found</title>\n  </head>\n\n  <body class=\"error-body\">\n    <div class=\"error-div\">\n      <img class=\"error-img\" src=\"/images/error_dolphin.gif\">\n      <h1>Error 404!</h1>\n      <p class=\"error-p\">Hmmm... the page you're looking for is missing.</p>\n      <button class=\"error-button\">\n        <a class=\"error-a\" href=\"/dashboard\">Go to Homepage</a>\n      </button>\n    </div>\n  </body>\n</html>\n"
  end

当我旋转服务器并通过Postman到达一个不存在的端点时,我会得到我期望的响应。当我在我的终端上运行测试时,我得到这样的信息:

代码语言:javascript
运行
复制
1) test renders 404.html (MyApp.ErrorViewTest)
test/views/error_view_test.exs:4
** (Phoenix.Router.NoRouteError) no route found for GET /fake (MyApp.Router)
code: conn = get build_conn(), "/fake"
stacktrace:
  (MyApp 0.0.1) lib/phoenix/router.ex:402: MyApp.Router.call/2
  (MyApp 0.0.1) lib/MyApp/endpoint.ex:1: MyApp.Endpoint.plug_builder_call/2
  (MyApp 0.0.1) lib/MyApp/endpoint.ex:1: MyApp.Endpoint.call/2
  (phoenix 1.5.13) lib/phoenix/test/conn_test.ex:225: Phoenix.ConnTest.dispatch/5
  test/views/error_view_test.exs:5: (test)


Finished in 0.06 seconds (0.06s async, 0.00s sync)
1 test, 1 failure

这是我的ErrorView:

代码语言:javascript
运行
复制
defmodule MyApp.ErrorView do
  use MyApp.Web, :view

  def render("500.json", _assigns) do
    %{error: "Error"}
  end

  def render("404.json", _assigns) do
    %{error: "Not Found"}
  end

  def render("401.json", _assigns) do
    %{error: "Unauthenticated"}
  end

  def render("403.json", _assigns) do
    %{error: "Unauthorized"}
  end

  def render("400.json", %{error: error}) do
    %{error: error}
  end

  # In case no render clause matches or no
  # template is found, let's render it as 500
  def template_not_found(_template, assigns) do
    render "500.html", assigns
  end
end

我目前使用的是凤凰1.5.5,药剂1.13.1,Erlang 24.1.7。

如果能提供任何帮助,我们将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-20 14:34:42

get包装在您的发送/2测试中,您应该可以这样做:)

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

https://stackoverflow.com/questions/72311575

复制
相关文章

相似问题

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