Ruby on rails Rspec重定向到测试

Ruby on rails Rspec重定向到测试,ruby-on-rails,ruby-on-rails-3,redirect,rspec,rspec2,Ruby On Rails,Ruby On Rails 3,Redirect,Rspec,Rspec2,在我的控制器中,当用户创建新帖子时,他/她将被重定向到包含新创建帖子的页面。我想在rspec中创建一个测试来覆盖这个重定向,但是我遇到了麻烦。具体来说,我想知道在reffirst_to参数中写什么。下面是控制器代码 def create @micropost = Micropost.new(params[:micropost]) respond_to do |format| if @micropost.save format.html {redirect_to @micropost

在我的控制器中,当用户创建新帖子时,他/她将被重定向到包含新创建帖子的页面。我想在rspec中创建一个测试来覆盖这个重定向,但是我遇到了麻烦。具体来说,我想知道在reffirst_to参数中写什么。下面是控制器代码

def create
@micropost = Micropost.new(params[:micropost])
 respond_to do |format|
  if @micropost.save
    format.html {redirect_to @micropost}
  else
    format.html {render action: 'edit'} 
  end
end
end
这是rspec测试

before do
  @params = FactoryGirl.build(:micropost)
end

it "redirects to index" do
  #clearly @params.id doesn't work. its telling me instead of a redirect im getting a 
  #200
  #response.should redirect_to(@params.id)
end

假设@params将创建一个有效的Micropost(否则.save将失败,您将呈现:edit)


假设@params将创建一个有效的Micropost(否则.save将失败,您将呈现:edit)


隐马尔可夫模型。。添加
microspost:@params.attributes
告诉我无法批量分配属性。没有它,它告诉我我不会收到重定向。需要进一步调查。该错误是由控制器调用Micropost.new(params[:Micropost])引起的。看,我让它工作了,但我有一个快速的问题首先。写
:microspost=>@params.attributes
和只写
@params
的原因是什么?
microspost.new(params[:microspost])
正在
params[:microspost]
中寻找散列,因此您需要在测试中通过散列的散列。嗯。。添加
microspost:@params.attributes
告诉我无法批量分配属性。没有它,它告诉我我不会收到重定向。需要进一步调查。该错误是由控制器调用Micropost.new(params[:Micropost])引起的。看,我让它工作了,但我有一个快速的问题首先。编写
:microspost=>@params.attributes
与只编写
@params
的原因是什么?
microspost.new(params[:microspost])
正在
params[:microspost]
中查找散列,因此您需要在测试中通过散列的散列。
it "redirects to index on successful save" do
  post :create, :micropost => @params.attributes
  response.should be_redirect
  response.should redirect_to(assigns[:micropost])
end

it "renders :edit on failed save" do
  post :create, :micropost => {}
  response.should render ... # i don't recall the exact syntax...
end