使用不同的参数多次运行rspec测试套件

时间:2019-04-22 19:39:44

标签: ruby rspec

我有一套要运行的规范。我想每次使用不同的参数多次运行规格。例如,我正在针对两个不同的数据库版本测试SQL脚本。测试用例相同,但是连接字符串不同。我将如何实现? 我是RSpec的新手,我能够使整个套件适用于一个版本。只需要知道如何使用不同的参数重新运行?

我看过Class:RSpec::Core::Runner,但是从文档中我还不太清楚如何利用它来多次运行?

2 个答案:

答案 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