3
我的测试是这样工作的:自动测试不使用RSpec共享实例
<<< 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>
这是,因为autotest
产生的RSpec的命令行包括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 [email protected] 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