0

認証にDeviseを使用するRailsアプリケーションでいくつかのテストを開始しました。rspecを生成し、追加しただけです

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

私のspec/support/devise.rbファイルに。また、gemfileのテストグループにCapybaraを追加したり、bundleコマンドを実行したりしました。しかし、テストにアクセスすると、メソッドエラーは発生しません。これが私のuser_spec.rbの例です。

require 'spec_helper'

describe "Club" do
  before(:each) do
    @club ||= FactoryGirl.create(:club)
    FactoryGirl.create(:membership)
    User.all.each{|x| x.delete}
  end
  describe "privacy" do
    it "shouldn't be shown any tournament if the user is private" do
      attributes = FactoryGirl.attributes_for(:user)
      user = User.create!({private: true}.merge(attributes))
      assert(user.private)
      visit "/user/#{user.id}/tournaments"

      page.should have_no_selector(".tournament-list")
    end
  end
end

rspecを実行すると、次のようなエラーが発生します。

Failures:

  1) Club privacy shouldn't be shown any tournament if the user is private
     Failure/Error: visit "/user/#{user.id}/tournaments"
     NoMethodError:
       undefined method `visit' for #<RSpec::Core::ExampleGroup::Nested_3::Nested_1:0x007ff0ea113108>
     # ./spec/user_spec.rb:14:in `block (3 levels) in <top (required)>'
4

2 に答える 2

1

私が使用するカピバラの仕様については、次のとおりです。

describe "Club", :type => :feature, :js => true do
  include Capybara::DSL

  it "..."
end

代わりに、User.all.each {| x | x.delete}、DatabaseCleanerを使用

于 2013-10-22T04:39:05.217 に答える
1

Capybara::DSLをRSpecconfigspec_helper.rbに簡単に追加できます

RSpec.configure do |config|
  .....
  .......
  config.include(Capybara::DSL)

end
于 2016-04-29T14:01:15.350 に答える