我已经将 Rails 应用程序与 omniauth 和设计集成相集成。在一个 Controller 中,我有 -
def create
# some
# stuff
# here
sign_in_and_redirect(:person, @person)
# some
# stuff
# here
end
因为这个 Action 来自设计,我不应该测试这个 Action ,而只是测试它的存在(如果我错了,请在这里纠正我。)。此外,由于我在 mock 这个人对象,它没有方法来传递原始 sign_in_and_redirect 操作。
那么,如何测试这个 Controller 呢?
更新
我在之前的 do block 中尝试过这个 -
controller.stub!(:sign_in_and_redirect).and_return(true)
但这给我错误,因为 - 缺少 templace 身份验证/创建 我没有任何 create.html.erb,因为它会在正常工作流程中重定向。
更新
我的 AuthencationController#create 方法代码可以在这里看到 - http://www.pastie.org/2116067 我的测试代码可以在这里看到 - http://www.pastie.org/2116081
最佳答案
最后我发现它与设计有关。
这解决了问题 - 设计 wiki - How To: Controllers and Views tests with Rails 3 (and rspec)
我必须包含 support/devise.rb 文件和下面的行 -
RSpec.configure do |config|
config.include Devise::TestHelpers, :type => :controller
end
在那之后,我只是通过 stub 的方式向 person 类添加了所需的方法,并且它起作用了。
关于ruby-on-rails - Rspec 跳过 Controller 中的设计操作 - sign_in_and_redirect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6468074/