Ruby on rails 使用不同的设置多次运行同一测试
有人知道在不同环境下运行同一组测试的好方法吗。这是一个荒谬的例子,想要用两种不同的设置运行相同的测试。我不想重复同样的测试,这样我就可以有不同的设置Ruby on rails 使用不同的设置多次运行同一测试,ruby-on-rails,testunit,shoulda,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? ... en
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\u 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
这是可行的,但我很难将这个过程转移到上下文中,这样我的测试就不会变得混乱。一旦我将proc移动到上下文中,我就不知道如何在merge_block语句中引用它。你知道我的意思吗?是的,我知道你的意思。因为它需要是一个类方法,所以它必须位于上下文之外。您可以将上下文中的变量设置为Proc并将其合并,而不是将其定义为返回Proc的方法。不过看起来还是有点乱。