rails rspec http基本认证测试

rap*_*tle 4 rspec capybara ruby-on-rails-3

如何使用rspec2&capybara测试使用http basic auth登录rails 3.1应用程序?

我正在使用这个;

 describe "GET 'index'" do
      it "should be successful" do
        request.env["HTTP_AUTHORIZATION"] = "Basic " + Base64::encode64("username:password")
        get 'index'
        response.should be_success
      end
    end
Run Code Online (Sandbox Code Playgroud)

但它给了我这个错误;

 NoMethodError:
            undefined method `env' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

iai*_*ain 16

Capybara 内置Rack :: Test.

因此,您可以在发出请求之前使用该Rack::Test::Session.basic_authorize方法设置Authorization HTTP标头字段.

basic_authorize 'username', 'password'
get 'index'
Run Code Online (Sandbox Code Playgroud)