Я пишу спецификацию для своего контроллера Rails, это действие, которое я тестирую:
def create
@course = Course.new(params[:course])
if @course.save then
#flash[:notice] = 'Course Created'
redirect_to courses_path
else
render :action => 'new', :status => 400
end
end
И это спецификация, которая его проверяет:
describe "POST /courses [Good Input]" do
it "should redirect to Courses index page after creation" do
@course.stub!(:save).and_return(true)
post :create
response.should be_success
response.should redirect_to(courses_path)
end
end
Тем не менее, я получаю эту ошибку от RSpec:
'КурсыКонтроллер POST/курсы [Хорошо Вход]
следует перенаправить на курсы индекс страницы после создания
FAILED
ожидается перенаправление на "/курсы", полученное нет перенаправления
Любые идеи, почему это происходит?
решаемые
как указано rishavrastogi, должен be_success ожидает http-код в диапазоне 2xx, а перенаправление попадает в диапазон 3xx (фактически его 302)
Утверждение должно быть изменено на = > response.should be_redirect.
Хотя в этом случае избыточно проверять, что ответ является перенаправлением, а затем проверяет, что перенаправляет на определенную страницу, так что утверждение больше не требуется.