我一直在讨论这个问题。我甚至复制并粘贴了教程中的示例,所以我不确定我做错了什么。我很感激任何帮助。
到目前为止,我通过了所有测试。
我创建了集成测试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
如果有人对可能造成这种失败的原因有任何想法,我会非常感激。这让我很疯狂。
答案 0 :(得分:1)
@user.following.empty?
...正在返回true。但你期望它是零或假。
assert_not - 断言表达式不是真的。如果object为nil或false,则通过。
来自here。
简而言之,@ user.following是空的。您的测试期望不。
答案 1 :(得分:0)
检查您是否正确设置了用户灯具。如果您没有关系设备所需的用户,那么它就不会起作用。
检查Michael Hartl的GitHub用户灯具,看看你是否拥有它们: https://github.com/mhartl/sample_app_3rd_edition/blob/master/test/fixtures/users.yml
为我工作。