小编hea*_*xer的帖子

14
推荐指数
3
解决办法
6283
查看次数

使用Grape作为Rack应用程序时,Warden在rspec测试中不可用

我在使用Warden的哈希出现在我的RSpec测试中的请求哈希中时遇到了问题.当我在开发模式下运行我的应用程序时,Warden键就在那里,但在测试环境中,一切都是零.我在下面包含了我的基本rspec配置.如果有人有任何想法,我错了,我真的很想知道,我几乎整整一天都在摆弄这个.

在开发模式下运行时,会找到Warden,但env['warden']始终在测试模式下运行时nil

这是我在开发模式期间在请求对象内部使用warden哈希时获得的示例:

request['warden']
=> Warden::Proxy:70272688271480 @config={:default_scope=>:default, :scope_defaults=>{}, :default_strategies=>{:_all=>[:password, :basic]}, :intercept_401=>true, :failure_app=>GrapeApe::BadAuthentication}
Run Code Online (Sandbox Code Playgroud)

这是我在测试期间检查请求对象内的warden哈希时得到的结果:

request['warden']
=> nil
Run Code Online (Sandbox Code Playgroud)

Spec Helper文件

require 'rubygems'

ENV["RACK_ENV"] ||= 'test'

require 'rack/test'
require 'capybara/rspec'
require 'factory_girl'
require File.expand_path("../../config/environment", __FILE__)

FactoryGirl.find_definitions

RSpec.configure do |config|
  config.mock_with :rspec
  config.expect_with :rspec
  config.include Capybara::DSL
  config.include Rack::Test::Methods
  config.include Warden::Test::Helpers
  config.after :each do
    Warden.test_reset!
  end
end

Capybara.configure do |config|
  config.app = GrapeApe::App.new
  config.server_port = 9293
end
Run Code Online (Sandbox Code Playgroud)

示例规范,其中warden应该抛出403响应,因为用户尚未经过身份验证.

it "should get a specfic sketch" do
  get "/api/v1/sketches/#{@sketch.id}"
  JSON.parse(last_response.body)['files'].should == ["foo"]
end
Run Code Online (Sandbox Code Playgroud)

示例错误: …

rspec2 warden

5
推荐指数
0
解决办法
519
查看次数