使用不同的设置多次运行相同的测试

时间:2012-10-25 20:14:19

标签: ruby-on-rails testunit shoulda

有没有人知道在不同的环境中运行同一组测试的干燥方法。这是一个荒谬的例子,希望用两种不同的设置运行相同的测试。我不想重复相同的测试,因此我可以有不同的设置。

context 'cat' do
  setup do
    @object = cat
    ....
  end

  should 'walk' do
    assert @object.walk?
    ...
  end

  should 'run' do
    assert @object.run?
    ...
  end
end

context 'dog' do
  setup do
    @object = dog
    ....
  end

  should 'walk' do
    assert @object.walk?
    ...
  end

  should 'run' do
    assert @object.run?
    ...
  end
end

1 个答案:

答案 0 :(得分:3)

我以前用merge_block做过。在测试中定义一个类方法,返回Proc你的应用程序,然后在适当的地方合并它。

def self.walk_and_run
  Proc.new do
    should 'walk' do
      assert @object.walk?
    end
    should 'run' do
      assert @object.run?
    end
  end
end

context 'cat' do
  setup do
    @object = cat
  end
  merge_block(&walk_and_run)
end

context 'dog' do
  setup do
    @object = dog
  end
  merge_block(&walk_and_run)
end