1

私はRubyが初めてで、最初のプロジェクトを始めたばかりです。rspec を使用して最初のテストを実行しようとしたときに失敗しました。

これは私のgemfileです:

source 'https://rubygems.org'

gem 'rails', '3.2.12'
gem 'bootstrap-sass', '2.3.0.1'
gem 'bcrypt-ruby', '3.0.1'
gem 'faker', '1.1.2'
gem 'will_paginate', '3.0.4'
gem 'bootstrap-will_paginate', '0.0.9'
gem 'jquery-rails', '2.2.1'
gem 'mysql2'
#gem 'execjs'
gem 'therubyracer', :platforms => :ruby

# Dev and test gems
group :development, :test do
  gem 'rspec-rails', '2.13.0'
  gem 'guard-rspec', '2.4.1'
  gem 'guard-spork', '1.4.2'
  gem 'spork', '0.9.2'
end

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '3.2.6'
  gem 'coffee-rails', '3.2.2'
  gem 'uglifier', '1.3.0'
end

#only test gems
group :test do
  gem 'capybara', '2.0.2'
  gem 'factory_girl_rails', '4.2.1'
  gem 'cucumber-rails', '1.3.0', :require => false
  gem 'database_cleaner', '0.9.1'
  # gem 'launchy', '2.1.0'
  # gem 'rb-fsevent', '0.9.1', :require => false
  # gem 'growl', '1.0.3'
end

group :production do
  gem 'pg', '0.12.2'
end

ここに私のhome_pages_spec.rbがあります

require 'spec_helper'

describe "HomePages" do
  before { get 'home_page/home'}
  it { should have_content("Home")}
end

私が走るとき

bundle exec rspec spec/requests/home_pages_spec.rb

私は得る

Failures:

  1) HomePages 
     Failure/Error: it { should have_content("Home")}
     NoMethodError:
       undefined method `has_content?' for "HomePages":String
     # ./spec/requests/home_pages_spec.rb:5:in `block (2 levels) in <top (required)>'

私を助けてください、私は少し検索して同様の問題を見ましたが、それほどではありません..さらに、それらは少し古く、以前はバグであったものは今ではありません。

さらに、なぜ私がvisitコマンドを使用できないのか(RSpec::Core::ExampleGroup::Nested_1の未定義メソッド「visit」も...)、getコマンドを使用しなければならない理由を説明できれば、それは素晴らしいことです

4

3 に答える 3

2

expect(page).toの代わりに使用する場合は、 itを宣言する必要があります。

describe "HomePages" do
  before { get 'home_page/home'}
  subject { page }
  it { should have_content("Home")}
end

または、次のように簡単に実行できます。

describe "HomePages" do
  before { get 'home_page/home'}
  expect(page).to have_content('Home')
end
于 2013-09-16T15:41:43.020 に答える
0

rspec の have_content() http://rubydoc.info/github/jnicklas/capybara/master/Capybara/RSpecMatchersを探していると思います

行を変更します: { should have_contact("Home")}

to: it { should have_content("Home")}

お役に立てれば

于 2013-02-25T21:12:33.660 に答える
0

メソッドgetは fromrspec-railsであり、これを行うことができます。

specify { response.should have_content("Foo") }

メソッドvisitは fromcapybaraであり、これを行うことができます。

specify { page.should have_content("Foo") }

これらのメソッドは のすべての仕様で利用可能でしたspec/requestsが、Capybara 2.0 の時点でこれらは分離されました。Capybara 統合テストを に配置しspec/featuresます。

なぜこれが行われたかについては、このブログ記事を参照してください。

于 2013-02-26T09:30:52.750 に答える