如何为'post'或'get'函数调用明确选择控制器?

时间:2015-02-22 19:39:51

标签: ruby-on-rails testing

我可以在这里看到这些功能的定义:https://github.com/rails/rails/blob/a3b1105ada3da64acfa3843b164b14b734456a50/actionpack/lib/action_dispatch/testing/integration.rb#L37

但是如何明确选择控制器呢?例如,假设我必须先进行登录才能继续进行某些测试。我想在RSpec测试中发帖:

require 'rails_helper'

RSpec.describe API::V1::BooksController, :type => :controller do
    def login!
        post "/sessions", { email: "xyz@abc.com", password: "pw" }
        ...
    end
    describe "my test" do
        login!
        ...
    end
end

但是我得到了

ActionController::UrlGenerationError:
       No route matches {:action=>"/sessions", :controller=>"api/v1/books", :email=>"xyz@abc.com", :password=>"pw"}

我尝试过像post 'sessions#create'post :controller => "sessions", :action => "create"这样的变体...但是没有任何工作,我不喜欢只是猜测正确方法来调用它。

建议表示赞赏,谢谢。

0 个答案:

没有答案