Я пишу спецификацию для моего контроллера 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 .
Хотя в этом случае избыточно проверять, является ли ответ перенаправлением, а затем проверять, что перенаправляет на определенную страницу, так что утверждение больше не требуется.