Jon*_*röm 40 testing rspec ruby-on-rails web-testing
有谁知道如何使rspec遵循重定向(在控制器规范中)?(例如,test/unit有follow_redirect!)
我试过"follow_redirect!" 和"follow_redirect"但只得到
undefined method `follow_redirect!' for #<Spec::Rails::Example::ControllerExampleGroup::Subclass_1:0xb6df5294>
Run Code Online (Sandbox Code Playgroud)
例如:
当我创建帐户时,页面将重定向到帐户页面,我的新帐户应位于列表的顶部.
it "should create an account" do
post :create, :name => "My New Account"
FOLLOW_REDIRECT!
response.code.should == "200"
accounts = assigns[:accounts]
accounts[0].name.should == "My New Account"
end
Run Code Online (Sandbox Code Playgroud)
但是FOLLOW_REDIRECT!需要改为实际工作的东西.
zet*_*tic 65
我认为这是rspec-rails控制器测试的默认行为,因为您可以设置对响应状态和/或路径的期望,并测试是否成功.
例如:
it "should create an account" do
post :create
response.code.should == "302"
response.should redirect_to(accounts_path)
end
Run Code Online (Sandbox Code Playgroud)
小智 27
您可以使用访问重定向位置
response.headers['Location']
Run Code Online (Sandbox Code Playgroud)
然后你可以直接请求.
and*_*myr 19
如果要测试重定向,则要移出rspec-rails域.
您可以使用Webrat或其他一些集成测试框架来测试它.
无需借助集成测试即可解决此问题的最简单方法可能是模拟导致重定向的方法.
小智 5
如果您想遵循重定向使用请求规范(相当于 Test::Unit 中的集成测试),则该规范超出范围。
在请求规范中follow_redirect!和在 Test::Unit 中一样有效。
或者,如果您想立即重定向,请使用_via_redirect动词后缀,例如:
post_via_redirect :create, user: @user
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29213 次 |
| 最近记录: |