Я столкнулся с ошибкой, выполняющейся при запуске пакета rake test. Этот файл является test/integration/users_index_test.rb. Похоже, что ниже:Ruby on Rails 4 Test Failure (функция удаления)
require 'test_helper'
class UsersIndexTest < ActionDispatch::IntegrationTest
def setup
@admin = users(:michael)
@non_admin = users(:archer)
end
test "index as admin including pagination and delete links" do
log_in_as(@admin)
get users_path
assert_template 'users/index'
assert_select 'div.pagination'
first_page_of_users = User.paginate(page: 1)
first_page_of_users.each do |user|
assert_select 'a[href=?]', user_path(user), text: user.name
unless user == @admin
assert_select 'a[href=?]', user_path(user), text: 'delete',
method: :delete
end
end
assert_difference 'User.count', -1 do
delete user_path(@non_admin)
end
end
test "index as non-admin" do
log_in_as(@non_admin)
get users_path
assert_select 'a', text: 'delete', count: 0
end
end
Запуск теста на грабли, я получаю следующее сообщение «сбой»:
1) Failure:
UsersIndexTest#test_index_as_admin_including_pagination_and_delete_links [/Users/********/workspace/myapp/test/integration/users_index_test.rb:19]:
<delete> expected but was
<User 19>.
Expected 0 to be >= 1.
19 runs, 49 assertions, 1 failures, 0 errors, 0 skips
Любые идеи, что не так? Благодарю.
View (index.html.slim):
- provide(:title, 'All users')
h1
| All users
= will_paginate
ul.users
- @users.each do |user|
= render @users
= will_paginate
_user.html.slim:
li
= gravatar_for user
= link_to user.name, user
- if current_user.admin? && !current_user?(user)
| | <%= link_to "delete", user, method: :delete, data: { confirm: "You sure?" } %>
А как выглядит вид? –
Дважды проверьте файл fixture 'users.yml' и убедитесь, что у вас есть строка' admin: true' для ': michael'. –
Пользователь michael имеет admin true в файле users.yaml. Мнения были добавлены к вопросу выше. – user1072337