Tôi đang viết một spec cho bộ điều khiển Rails của tôi, đây là hành động tôi là thử nghiệm:RSpec nên redirect_to vấn đề
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
Và đây là spec mà xác nhận điều đó:
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
Tôi vẫn nhận được lỗi này từ RSpec:
'CoursesController POST/courses [Good Input]
nên chuyển hướng đến khóa học trang chỉ mục sau khi tạo'
FAILED
dự kiến chuyển hướng sang "/ khóa học", có không chuyển hướng
Bất cứ ý tưởng tại sao điều này xảy ra?
SOLVED
như rishavrastogi nói, nên be_success hy vọng một mã http trên phạm vi 2xx, và một chuyển hướng rơi vào phạm vi 3xx (trên thực tế 302 của nó)
Nhu cầu khẳng định được thay đổi thành =>phản hồi.hãy be_redirect.
Mặc dù trong trường hợp này, không cần kiểm tra xem phản hồi có phải là chuyển hướng không và sau đó kiểm tra chuyển hướng đến một trang cụ thể, do đó không cần xác nhận nữa.
tại sao tôi nên thay đổi bài đăng: tạo? –
thực sự có thể không cần thiết cho đến khi bạn muốn chuyển một số giá trị của các biến mẫu chẳng hạn như "post: create,: course => {: title =>" something "} .." v.v .. điều này có thể được yêu cầu khi làm việc với xác thực –
Ok. Cảm ơn. Tôi đang chế giễu mọi thứ (như Course.new và Course.find) ... vì vậy tôi thực sự không cần điều đó, nhưng đó là một điểm tốt anyway –