2014-12-03 47 views

回答

4


正如你可以看到herelogin_as电话set_user用同一套方案。

这是set_usersource code(点击“查看源代码”)。在第165行,您会看到如果:scope选项为空,则将使用默认范围。在你的Rails应用程序,打开config/initializers/devise.rb,你会如下

# Configure the default scope given to Warden. By default it's the first 
# devise role declared in your routes (usually :user). 
# config.default_scope = :user 

这意味着你的默认范围是:user当你调用login_as没有通过范围这是用来找到。

2.
这里是Warden.test_mode!

.test_mode的文档! ⇒对象

向监督员提供帮助方法进行测试。

要在测试模式下设置warden,请调用test_mode!方法

这将提供许多方法。 Warden.on_next_request(& blk) - 捕获一个块,在下一个请求中产生代理代理 Warden.test_reset! - 删除任何已被 在下一个请求中执行的捕获块

Warden.test_reset!块RSpec的,或用于测试::单位 拆卸方法

这意味着,如果你确定你不需要/使用任何由监狱长提供的辅助方法为上市后不应该被称为在调用这个方法不会破坏你的测试。