Ric*_*ick 2 ruby-on-rails shoulda rspec2 ruby-on-rails-3
我正在使用RSpec + Shoulda在Rails 3中测试我的RESTful控制器.我无法弄清楚如何测试创建动作的重定向.标准RESTful控制器应重定向到新帖子的show动作.例如,如果我有一个Project Model的ProjectsController,那么在成功创建后,该操作应该:
redirect_to project_url(@project)
Run Code Online (Sandbox Code Playgroud)
Shoulda提供了一个方便的redirects_to宏来处理这个问题.这是我尝试过的:
describe ProjectsController, '#create' do
context "Anonymous user" do
before :each do
@attrs = Factory.attributes_for(:project_with_image)
post :create, :project => @attrs
end
it { should assign_to(:project) }
it { should respond_with(:redirect) }
it { should redirect_to(@project) }
end
end
Run Code Online (Sandbox Code Playgroud)
(是的,我正在使用FactoryGirl,但因为在这种情况下我只使用它作为属性,所以它应该没关系.我想.)
如何在那里指定最后一次测试?它应该redirect_to(...)什么?我试过@project,project_url(@project)..但我无法理解.
看看Shoulda匹配器代码,我注意到redirect_to匹配器可以接受一个块.但我不确定如何访问该块中新创建的@project对象......
有什么想法吗?
没试过,但问题可能是,你的规范中没有@project.怎么样
it {should redirect_to(Project.last) }Run Code Online (Sandbox Code Playgroud) 要么 it {should redirect_to(assigns(:project)) }Run Code Online (Sandbox Code Playgroud)?
| 归档时间: |
|
| 查看次数: |
1027 次 |
| 最近记录: |