需要一些东西,可以按照以下方式保持rspec DRY:
rspec spec/features/users_spec.rb:12 -fd tab: 'Home'
使用,
ruby 1.9.3
rspec 2.6.4
Rails 3.1.6
gem 'capybara', '2.1.0'
gem 'selenium-webdriver', '2.43.0'
实际上,我有多个' it_behaves_like' 50多个具有相同重复代码的多个组合如下。
以下是解释我的问题的基本示例:
describe 'Login' do
primary_admin = { acc_type: 'admin', user_type: 'primary' }
secondary_admin = { acc_type: 'admin', user_type: 'secondary' }
primary_admin = { acc_type: 'non-admin', user_type: 'primary' }
secondary_admin = { acc_type: 'non-admin', user_type: 'secondary' }
tab = { tab: 'Home' }
it_behaves_like 'Authorized User', primary_admin.merge(tab)
it_behaves_like 'Authorized User', secondary_admin.merge(tab)
it_behaves_like 'Authorized User', primary_admin.merge(tab)
it_behaves_like 'Authorized User', secondary_admin.merge(tab)
tab = { tab: 'My Profile' }
it_behaves_like 'Authorized User', primary_admin.merge(tab)
it_behaves_like 'Authorized User', secondary_admin.merge(tab)
it_behaves_like 'Authorized User', primary_admin.merge(tab)
it_behaves_like 'Authorized User', secondary_admin.merge(tab)
tab = { tab: 'Security' }
it_behaves_like 'Authorized User', primary_admin.merge(tab)
it_behaves_like 'Authorized User', secondary_admin.merge(tab)
it_behaves_like 'Authorized User', primary_admin.merge(tab)
it_behaves_like 'Authorized User', secondary_admin.merge(tab)
end
对于多个标签页,需要重复上述相同的代码。
我想通过'标签'控制台中的参数,如果可能的话如果可能或以任何其他方式减少此重复代码,请通知。
注意:我希望将这些测试套装保存在上面的不同部分,以便在需要时使用行号轻松选择需要的测试套件。
答案 0 :(得分:4)
你可以使用env vars
env TAB=home rspec spec/features/users_spec.rb:12
然后,在你的代码中
tab = { tab: ENV['TAB'] }