测试用户#show中的"some content"



我有以下凤凰应用程序:

mix phoenix.new my_app --database mysql
cd my_app
mix ecto.create
mix phoenix.gen.html User users name:string
mix ecto.migrate

现在mix test运行没有问题。

如果我将test/controllers/user_controller_test.exs更改为期望"某些内容"而不是"显示用户",show由于@valid_attrs %{name: "some content"}而应该存在,则测试失败。为什么会这样呢?user#show页面上应该有"一些内容"。当我在浏览器中以development模式手动尝试它时,它就有了。

错误在哪里?我该如何解决它?

test/controllers/user_controller_test.exs

defmodule MyApp.UserControllerTest do
  use MyApp.ConnCase
  alias MyApp.User
  @valid_attrs %{name: "some content"}
  @invalid_attrs %{}
  [...]
  test "shows chosen resource", %{conn: conn} do
    user = Repo.insert! %User{}
    conn = get conn, user_path(conn, :show, user)
    assert html_response(conn, 200) =~ "some content"
  end
  [...]

测试输出

$ mix test
........
  1) test shows chosen resource (MyApp.UserControllerTest)
     test/controllers/user_controller_test.exs:29
     Assertion with =~ failed
     code: html_response(conn, 200) =~ "some content"
     lhs:  "<!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="">nn    <title>Hello MyApp!</title>n    <link rel="stylesheet" href="/css/app.css">n  </head>nn  <body>n    <div class="container">n      <header class="header">n        <nav role="navigation">n          <ul class="nav nav-pills pull-right">n            <li><a href="http://www.phoenixframework.org/docs">Get Started</a></li>n          </ul>n        </nav>n        <span class="logo"></span>n      </header>nn      <p class="alert alert-info" role="alert"></p>n      <p class="alert alert-danger" role="alert"></p>nn      <main role="main">n        <h2>Show user</h2>nn<ul>nn  <li>n    <strong>Name:</strong>n    n  </li>nn</ul>nn<a href="/users/16/edit">Edit</a>n<a href="/users">Back</a>nn      </main>nn    </div> <!-- /container -->n    <script src="/js/app.js"></script>n  </body>n</html>n"
     rhs:  "some content"
     stacktrace:
       test/controllers/user_controller_test.exs:32
.......
Finished in 0.4 seconds (0.2s on load, 0.1s on tests)
16 tests, 1 failure
Randomized with seed 734322

user = Repo.insert! %User{}

插入所有字段都设置为 nil 的用户。

如果要使用 @valid_attrs 创建用户,请将该行更改为:

user = Repo.insert! User.changeset(%User{}, @valid_attrs)

相关内容

最新更新