2

異なるコンテキストで同じグループのテストを実行するための優れたドライな方法を知っている人はいますか。これは、2つの異なる設定で同じテストを実行したいというばかげた例です。セットアップを変えるためだけに、同じテストを繰り返す必要はありません。

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
4

1 に答える 1

3

私はmerge_block以前にそれをやったことがあります。shouldを返すクラス メソッドをテストで定義し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
于 2012-10-25T20:33:22.500 に答える