Rspec:controller spec登录助手

时间:2017-01-09 03:40:31

标签: ruby-on-rails ruby session rspec

我正在使用 rspec 来测试我的控制器。问题是我需要一个登录助手方法,其他控制器测试将在其before(:each) do方法中使用。

现在,我正在测试 ReportsController 只是获取 index 操作。

RSpec.describe ReportsController, type: :controller do
    let(:user) {build :user, :storeadmin}

    before(:each) do
      @request.host = "localhost:3000"
      login(user) if session[:id].blank?
    end

    # Index action has different types of responses
    describe "#index" do
      context "when content-type html" do  
        before do
          get :index
        end
        it { expect(response.content_type).to eq "text/html"}
        it { expect(response).to have_http_status(:ok) }        
      end
   end
end

我的助手:

def login(user)    
    post login_submit_path, {admin:{login_id:user.login_id, password: user.password}}     
end

当我执行测试时,它会发布到 ReportsController &#39> 登录而不是 LoginController ' 登录。它失败是因为:before_filter检查用户是否使用会话登录。我还尝试在我的帮助方法中直接设置会话,例如request.session[:user] = user from dbsession[:user]=user from db

0 个答案:

没有答案