У меня есть интересная ситуация, которая оставляет меня почесывая мою голову. Я создал контроллер (без модели), чтобы сгенерировать сбрасывание пароля. Я определил RESTful маршрут к контроллеру:RSpec маршрута распознавания
routes.rb
resources :password_resets
Я создал некоторое действие на контроллере, в частности, мое действие редактирования:
password_resets_controller. Р.Б.
class PasswordResetsController < ApplicationController
# code omitted
def edit
@user = User.find_by_password_reset_token!(params[:id])
end
# code omitted
end
пользователь может получить доступ правку из электронной почты тха т я отправить пользователю:
password_reset.html.haml
%p To reset your password, click the URL below.
= edit_password_reset_url(@user.password_reset_token)
До сих пор так хорошо, что мне удалось использовать код. Тогда у меня есть спецификации, которая проверяет мою почтовую программу:
describe "password reset" do
let(:user) { FactoryGirl.create(:user) }
let(:mail) { UserMailer.password_reset(user) }
it "sends user password reset url" do
mail.to.should eq([user.email])
end
end
Удивительно, но я получаю следующее:
Failure/Error: let(:mail) { UserMailer.password_reset(user) }
ActionView::Template::Error:
No route matches {:action=>"edit", :controller=>"password_resets"}
# ./app/views/user_mailer/password_reset.html.haml:5:in `_app_views_user_mailer_password_reset_html_haml__1760284087840822602_11954840'
# ./app/mailers/user_mailer.rb:7:in `password_reset'
Но есть совпадение маршрута, по крайней мере, глядя на моих маршрутах:
password_resets GET /password_resets(.:format) password_resets#index
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 GET /password_resets/:id(.:format) password_resets#show
PUT /password_resets/:id(.:format) password_resets#update
DELETE /password_resets/:id(.:format) password_resets#destroy
Что может быть неправильным в моих тестах/маршрутах?
Большое спасибо.
Это было действительно то, что происходило! Немного запутанное сообщение об ошибке от RSpec, но эй, теперь я буду знать. Большое спасибо! – alexs333