Ove*_*one 10 ruby authentication rspec ruby-on-rails devise
我正在尝试检查管理员是否在Rspec测试中注销.但通常的signed_in?方法不能从rspec中看出,也不是RSpec Devise Helpers的一部分.
这样的事情就是我所拥有的
before (:each) do
@admin = FactoryGirl.create(:administrator)
sign_in @admin
end
it "should allow the admin to sign out" do
sign_out @admin
#@admin.should be_nil
#@admin.signed_in?.should be_false
administrator_signed_in?.should be_false
end
Run Code Online (Sandbox Code Playgroud)
有没有办法检查管理员的会话,看看他是否真的登录?
我认为这真的是你需要的如何:使用Rails 3和4(以及RSpec)测试控制器
检查一下current_user
.它应该是nil
加.好的做法是使用这样的语法
-> { sign_out @admin }.should change { current_user }.from(@admin).to(nil)
Run Code Online (Sandbox Code Playgroud)
it "should have a current_user" do
subject.current_user.should_not be_nil
end
Run Code Online (Sandbox Code Playgroud)
小智 6
真的不是新答案,但我的代表不够高,无法发表评论......:
如果您已经覆盖subject
,则控制器controller
在控制器规范中可用,因此:
expect { ... }.to change { controller.current_user }.to nil
Run Code Online (Sandbox Code Playgroud)要检查特定用户,例如由 FactoryGirl 生成的用户,我们在以下方面取得了成功:
let(:user) do FactoryGirl.create(:client) ; end
...
it 'signs them in' do
expect { whatever }.to change { controller.current_user }.to user
end
it 'signs them out' do
expect { whatever }.to change { controller.current_user }.to nil
end
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
11370 次 |
最近记录: |