Rails 教程 - 第 12.2.3 章集成测试失败 - 预期为真

Rails Tutorial - Chapter 12.2.3 Integration Test Failure - Expected True

我为此绞尽脑汁已经有一段时间了。我什至复制并粘贴了教程中的示例,所以我不确定自己做错了什么。如果对此有任何帮助,我将不胜感激。

到目前为止,我已经通过了所有测试。

我刚刚创建了集成测试 before listing 12.27

$ rails generate integration_test following

这是我的 test/fixtures/relationships.yml 文件(我在整个教程中一直使用 mochi 而不是 michael)。

one:
  follower: mochi
  followed: lana

two:
  follower: mochi
  followed: mallory

three:
  follower: lana
  followed: mochi

four:
  follower: archer
  followed: mochi

这是我的 test/integration/following_test.rb

require 'test_helper'

class FollowingTest < ActionDispatch::IntegrationTest

  def setup
    @user = users(:mochi)
    log_in_as(@user)
  end

  test "following page" do
    get following_user_path(@user)
    assert_not @user.following.empty?
    assert_match @user.following.count.to_s, response.body
    @user.following.each do |user|
      assert_select "a[href=?]", user_path(user)
    end
  end

  test "followers page" do
    get followers_user_path(@user)
    assert_not @user.followers.empty?
    assert_match @user.followers.count.to_s, response.body
    @user.followers.each do |user|
      assert_select "a[href=?]", user_path(user)
    end
  end
end

这是我在 运行 bundle exec rake test

时遇到的测试失败
$ bundle exec rake test
Run options: --seed 23507

# Running:

........................................................FF

Finished in 1.736838s, 33.3940 runs/s, 164.0913 assertions/s.

  1) Failure:
FollowingTest#test_following_page [/app_path/test/integration/following_test.rb:12]:
Expected true to be nil or false


  2) Failure:
FollowingTest#test_followers_page [/app_path/test/integration/following_test.rb:21]:
Expected true to be nil or false

58 runs, 285 assertions, 2 failures, 0 errors, 0 skips

如果有人对导致此失败的原因有任何想法,我将不胜感激。这让我发疯了。

@user.following.empty?

...返回真值。但是您期望它为 nil 或 false。

assert_not - Assert that an expression is not truthy. Passes if object is nil or false.

来自 here.

简而言之,@user.following 是空的。您的测试预计 而不是

检查您是否正确设置了用户灯具。如果您没有关系装置所需的用户,那么它根本无法工作。

检查 Michael Hartl 的 GitHub 用户固定装置,看看您是否拥有它们: https://github.com/mhartl/sample_app_3rd_edition/blob/master/test/fixtures/users.yml

对我有用。