私のテストは次のようになります。
<<< spec/models/user_shared.rb
shared_examples_for "a user" do
end
<<< spec/models/worker_spec.rb
require 'spec_helper'
require 'models/user_shared'
describe Worker do
it_behaves_like "a user"
end
無事に走れますrspec spec
。しかしautotest
失敗します:
Exception encountered: #<ArgumentError: Shared example group 'a user' already exists>
これは、によって生成された rspec コマンド ラインにautotest
以下が含まれているためuser_shared.rb
です。
/usr/local/rvm/rubies/ruby-1.9.2-p290/bin/ruby -rrubygems -S /usr/local/rvm/gems/ruby-1.9.2-p290/gems/rspec-core-2.6.4/bin/rspec --tty [...] '/path/to/project/spec/models/worker_spec.rb' '/path/to/project/spec/models/user_shared.rb'
Running tests with args ["--color", "--tty", [...], "/path/to/project/spec/models/worker_spec.rb", "/path/to/project/spec/models/user_shared.rb"]...
Done.
Exception encountered: #<ArgumentError: Shared example group 'a user' already exists>
'/path/to/project/spec/models/user_shared.rb'
コマンドラインから削除して手動で実行すると、動作します。
ここで、これを次のように変更user_shared.rb
すると:
<<< spec/models/user_shared.rb
if !@included then
@included = true
shared_examples_for "a user" do
end
end
によって生成されたコマンドラインでも動作しautotest
ます。しかし、それは醜い回避策です。
rspec
「*_spec」ファイルのみが睾丸であることを知っているので、どのautotest
ようにこのように構成できますか?
私のGemfileには次のものがあります(テストに関連):
<<<< Gemfile
gem 'autotest'
gem 'autotest-rails'
group :test do
gem 'rspec-rails', '>= 2.6.1'
gem 'shoulda-matchers'
gem 'factory_girl_rails', '>= 1.0.2'
gem 'capybara', '>= 1.0.0'
gem 'cucumber-rails', '>= 1.0.2'
gem 'database_cleaner', '>= 0.6.7'
gem 'spork', '>= 0.9.0.rc'
end