我有一套要运行的规范。我想每次使用不同的参数多次运行规格。例如,我正在针对两个不同的数据库版本测试SQL脚本。测试用例相同,但是连接字符串不同。我将如何实现? 我是RSpec的新手,我能够使整个套件适用于一个版本。只需要知道如何使用不同的参数重新运行?
我看过Class:RSpec::Core::Runner
,但是从文档中我还不太清楚如何利用它来多次运行?
答案 0 :(得分:2)
您可以使用env variables解决此问题。假设您要为两个不同的MySQL数据库运行rspec。您可以这样定义数据库连接:
db_client = Mysql2::Client.new(database: ENV['DB_NAME'])
现在您可以像这样运行rspec:
DB_NAME=your_custom_db_name rspec
DB_NAME=other_db_name rspec
答案 1 :(得分:1)
您可以使用shared_examples来实现所需的目标。
这是一个例子:
RSpec.describe 'shared_examples' do
shared_examples 'is palendrome' do |word|
it 'is equal to itself if reversed' do
expect(word.reverse).to eq(word)
end
end
context 'with the word racecar' do
# Runs every example is the shared_examples block and passes
include_examples 'is palendrome', 'racecar'
end
context 'with the word apple' do
# Runs every example is the shared_examples block but fails
include_examples 'is palendrome', 'apple'
end
end