Я новичок в Ruby, и мне нужно написать тесты для Rails-приложения.Маршруты вызова участников в ActionController :: TestCase
Моя проблема заключается в том, что я не знаю, как я могу вызвать accept
действие FriendshipsController
Вот это FriendshipsController
:
class FriendshipsController < ApplicationSocialController
# ...
# create method is getting called
def create
# accessing params[:user_id]
end
# accept method doesn't get called
def accept
# accessing params[:id] and params[:user_id]
end
end
В следующем тестовом коде я увидел, что FriendshipsController.create
метод называется:
current_user = users(:users_002)
friend_user = users(:users_003)
@request.session[:user_id] = current_user.id
post :create, :user_id => friend_user.id # works fine
Но как я могу l FriendshipsController.accept
метод?
current_user = users(:users_002)
friend_user = users(:users_003)
friendship_from_current_to_friend = create_friendship(current_user, friend_user)
# friend_user should can accept friendship request
@request.session[:user_id] = friend_user.id
put :accept, :user_id => current_user.id, :id => friendship_from_current_to_friend.id
put
вызова работает без исключения, но accept
из FriendshipsController
никогда не вызывается.
Вот routes.rb
RedmineApp::Application.routes.draw do
# ...
resources :users do
# ...
resources :friendships do
# ...
member do
put :accept
put :deny
end
end
end
# ...
end
Что такое правильный способ вызова accept
?
Редактировать
Вот за исключением маршрутов
GET /users/:user_id/friendships/accepted(.:format) friendships#accepted GET /users/:user_id/friendships/pending(.:format) friendships#pending GET /users/:user_id/friendships/denied(.:format) friendships#denied GET /users/:user_id/friendships/write_message(.:format) friendships#write_message PUT /users/:user_id/friendships/:id/accept(.:format) friendships#accept PUT /users/:user_id/friendships/:id/deny(.:format) friendships#deny GET /users/:user_id/friendships(.:format) friendships#index POST /users/:user_id/friendships(.:format) friendships#create GET /users/:user_id/friendships/new(.:format) friendships#new GET /users/:user_id/friendships/:id/edit(.:format) friendships#edit GET /users/:user_id/friendships/:id(.:format) friendships#show PUT /users/:user_id/friendships/:id(.:format) friendships#update DELETE /users/:user_id/friendships/:id(.:format) friendships#destroy
Как вы проверяете, что он вызывается?Вызов выглядит отлично. – max
@papirtiger Я положил '$ stderr.puts 'create'' и' $ stderr.puts' accept'' поверх методов контроллера. После этого я вижу его на консоли, какой метод вызывается. – Vertex