7

サービスAPIをテストするためにRSpecリクエストの仕様を作成しようとしています。そのためには、ユーザーを認証する必要があります。ネット上でいくつかの例を見つけましたが、何も機能しません。今のところ、これで行き詰まっています。

require "spec_helper"

include Warden::Test::Helpers
Warden.test_mode!

describe "My requests" do

  it "creates an imaginary object" do
    user = FactoryGirl.create(:user)
    login_as(user, :scope => :user)
    post "/my_service", :my_data=> {:some => "data"}
    expect(response.body).to include("success")
  end

end

そして、私が得ているエラーは次のとおりです。

 ArgumentError: uncaught throw :warden

ご協力ありがとうございました。

4

2 に答える 2

10

最も簡単な方法は次のとおりです。

spec / rails_helper.rb

RSpec.configure do |config|
  # ...
  config.include Devise::Test::IntegrationHelpers, type: :request
end

そしてsign_in、あなたのリクエストスペックで使用してください。これは、include Devise::Test::IntegrationHelpersシステム/機能仕様またはRailsシステム/コントローラーテストで宣言するのと同じです。

このようにすると、「より良い」テストにつながります。

于 2018-05-19T23:39:09.950 に答える
4

ここで説明するように、実際にユーザーにサインインする必要があります(つまり、ユーザーはログインフォームを送信するか、少なくともログインアクションでPOSTを実行する必要があります)

于 2013-03-05T03:03:10.960 に答える