ruby-on-rails - 使用不同的设置多次运行相同的测试

标签 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

最佳答案

我之前用 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

关于ruby-on-rails - 使用不同的设置多次运行相同的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13076518/

相关文章:

ruby-on-rails - Rails 测试/单元测试辅助方法,NoMethodError : undefined method

ruby-on-rails - rails : Shoulda-matchers belong_to optional test

ruby-on-rails - 更新 shoulda-matchers 后未定义的方法 'assign_to'

ruby-on-rails - 轨attr_accessible rspec的检查

ruby-on-rails - RSolr::Error::Http (RSolr::Error::Http - 429

ruby-on-rails - 致命 : database "postgres" does not exist

CSS 可用但在推送到生产环境时不呈现 [Rails 应用程序]

ruby-on-rails - 在 Rails 中是否可以检查重定向或渲染是否已经发出?

ruby - 什么是 testunit 或其他 nunit 风格框架的良好失败消息?

ruby - 如何在测试单元中计算断言计数