【发布时间】:2014-07-08 20:11:34
【问题描述】:
我正在尝试在创建帖子时测试用户是否被重定向到部署路径。我已经添加了
config.include Rails.application.routes.url_helpers
将 rails 路线扩展到 rspec。但是我的测试仍然失败并出现以下错误
1) Failure/Error: expect(response).to redirect_to(path)
Expected response to be a redirect to <http://test.host/deployments/new> but was a redirect to <http://test.host/deployments/new.1473>.
Expected "http://test.host/deployments/new" to be === "http://test.host/deployments/new.1473".
# -e:1:in `<main>'
这是测试:
describe "post create" do
before do
allow(model).to receive(:new).and_return(instance)
end
context "where all is not well" do
before do
allow(instance).to receive(:save).and_return(false)
post :create, params_new_instance
end
sets_flash(:error)
it "should render the new form" do
expect(response).to render_template("projects/new")
end
end
context "where all is well" do
before do
allow(instance).to receive(:save).and_return(true)
post :create, params_new_instance
end
sets_flash(:notice)
it "redirects to new_deployments_path" do
expect(controller.controller_path).to eq(new_deployment_path)
end
end
end
项目控制器
def create
@project=Project.new(params_project)
if @project.save
record_saved
return redirect_to(new_deployment_path(@project))
else
check_for_errors
return render('/projects/new')
end
end
为什么会失败?我是否以正确的方式处理这个问题?
提前致谢
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 rspec rspec-rails