Ich beende Michael Hartl die Schienen Tutorial und bin hier stecken https://www.railstutorial.org/book/following_users#code-show_follow_viewDebug-Testverfahren in Schienen
Fehler in test/controllers/users_controller_test.rb
verursacht durch:
def setup
@user = users(:michael)
@other_user = users(:archer)
end
test "should redirect following when not logged in" do
get following_user_path(@user)
assert_redirected_to login_url
end
Fehlermeldung:
1) Error:
UsersControllerTest#test_should_redirect_following_when_not_logged_in:
ActionController::UrlGenerationError: No route matches {:action=>"https://stackoverflow.com/users/762146111/following", :controller=>"users"}
test/controllers/users_controller_test.rb:62:in `block in <class:UsersControllerTest>'
Die @user
im Setup wird von test/fixtures/users.yml
:
michael:
name: Michael Example
email: [email protected]
password_digest: <%= User.digest('password') %>
admin: true
activated: true
activated_at: <%= Time.zone.now %>
routes.rb
:
resources :users do
member do
get :following, :followers
end
end
app/controllers/users_controller.rb
:
class UsersController < ApplicationController
before_action :logged_in_user, only: [:index, :edit, :update, :destroy,
:following, :followers]
def following
@title = "Following"
@user = User.find(params[:id])
@users = @user.following.paginate(page: params[:page])
render 'show_follow'
end
end
rake routes
:
Prefix Verb URI Pattern Controller#Action
password_resets_new GET /password_resets/new(.:format) password_resets#new
password_resets_edit GET /password_resets/edit(.:format) password_resets#edit
sessions_new GET /sessions/new(.:format) sessions#new
users_new GET /users/new(.:format) users#new
root GET / static_pages#home
help GET /help(.:format) static_pages#help
about GET /about(.:format) static_pages#about
contact GET /contact(.:format) static_pages#contact
signup GET /signup(.:format) users#new
login GET /login(.:format) sessions#new
POST /login(.:format) sessions#create
logout DELETE /logout(.:format) sessions#destroy
following_user GET /users/:id/following(.:format) users#following
followers_user GET /users/:id/followers(.:format) users#followers
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PATCH /users/:id(.:format) users#update
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
GET /users(.:format) users#index
POST /users(.:format) users#create
GET /users/new(.:format) users#new
GET /users/:id/edit(.:format) users#edit
GET /users/:id(.:format) users#show
PATCH /users/:id(.:format) users#update
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
edit_account_activation GET /account_activations/:id/edit(.:format) account_activations#edit
password_resets POST /password_resets(.:format) password_resets#create
new_password_reset GET /password_resets/new(.:format) password_resets#new
edit_password_reset GET /password_resets/:id/edit(.:format) password_resets#edit
password_reset PATCH /password_resets/:id(.:format) password_resets#update
PUT /password_resets/:id(.:format) password_resets#update
microposts POST /microposts(.:format) microposts#create
micropost DELETE /microposts/:id(.:format) microposts#destroy
relationships POST /relationships(.:format) relationships#create
relationship DELETE /relationships/:id(.:format) relationships#destroy
Ich bin nicht sicher, warum der Fehler die Route zeigt der Test versucht zu schlagen /users/762146111/following
. 762146111 ist, wo die Benutzer-ID sein sollte, die ich annehmen sollte, 1. Ich habe versucht, rake db:migrate:reset
gefolgt von rake db:seed
tun, aber die ID bleibt gleich. Ich habe auch versucht, debugger
in die Methode über der Behauptung hinzuzufügen, aber ich habe Probleme, sudo gem install ruby-debug
zu installieren. byebug
durchläuft auch nur die Tests ohne Haltepunkt.
Einsicht oder Ideen stark
geschätzt
Eine wilde Ahnung - was würde passieren, wenn Sie 'following_user_path (@user)' zu 'following_user_path (id: @ user.id)'? Oder 'following_user_path (@ user.id)'? –
@IleEftimov hmm gleiche Fehlermeldung für beide dieser – alisontague
Ich wäre bereit, es zu testen, wenn Sie ein Repo mit dem Code bereitstellen. –