当前位置:  开发笔记 > 编程语言 > 正文

RSpec应该重定向到问题

如何解决《RSpec应该重定向到问题》经验,为你挑选了1个好方法。

我正在为我的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 /课程[好输入]

应该在创建后重定向到课程索引页面

失败

预期重定向到"/ courses",没有重定向

任何想法为什么会这样?

解决了

正如rishavrastogi所述,be_success应该在2xx范围内预期一个http代码,并且重定向属于3xx范围(实际上是302)

断言需要更改为=> response.should be_redirect.

虽然在这种情况下,检查响应是重定向然后检查重定向到特定页面是多余的,因此不再需要断言.



1> Rishav Rasto..:

我不是RSpec-er,但我猜"response.should be_success"不应该存在,因为响应实际上是"HTTP重定向"而不是"HTTP成功"...所以尝试删除response.should be_success

也改变

 post :create 

 post :create, :course => {} 

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有