6

私は持っていspec/controllers/add_to_carts_spec.rbます:

require 'spec_helper'

describe CartItemsController do

  before (:each) do
    @user = Factory(:user)
    sign_in @user
  end

  describe "add stuff to the cart" do
    it "should add a product to the cart" do
      product = FactoryGirl.create(:product)
      visit products_path(product)
      save_and_open_page
      click_on('cart_item_submit')
    end
  end

end

/spec/support/spec_helper.rb:

# This file is copied to spec/ when you run 'rails generate rspec:install'
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'capybara/rspec'

# Requires supporting ruby files with custom matchers and macros, etc,
# in spec/support/ and its subdirectories.
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}

RSpec.configure do |config|
  config.mock_with :rspec
  config.use_transactional_fixtures = true
end

...これもロードします/spec/support/devise.rb:

RSpec.configure do |config|
  config.include Devise::TestHelpers, :type => :controller
end

Guard はバックグラウンドで実行されており、これをスローし続けます。

Failures:

  1) CartItemsController add stuff to the cart should add a product to the cart
     Failure/Error: sign_in @user
     NoMethodError:
       undefined method `sign_in' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x1057fd428>
     # ./spec/controllers/add_to_carts_spec.rb:7

ここ数時間、さまざまな構成調整とさまざまな構文を試してみましたが、何も変わっていないようです。何か案は?

(新しいエラーを反映するように編集)

4

3 に答える 3

14

何らかの理由でこれも機能しないので、このヘルパーを次のように手動で仕様に含めます。

describe CartItemsController do
  include Devise::TestHelpers

  # ...
end
于 2011-08-22T09:30:25.263 に答える
13

これらのテスト ヘルパーは、統合/要求仕様では機能しません。このような状況で Devise をテストするための推奨される方法は、ログイン ページにアクセスし、フォームに入力して送信し、テストを実行することです。

より完全な説明については、このトピックに関する以前の SO の質問に対する David Chelimsky の回答を参照してください。

于 2011-08-22T06:56:02.440 に答える