我正在遍历网页上的树控件。点击树中的一些节点将改变FRAME_C中的内容,而点击其他节点则不会。如何过滤测试以仅在内容发生变化时运行?这里就是我想:RSpec:您如何基于之前的测试结果隐式过滤测试?
def viewDifferent?
if $prvView != $curView
return true
else
return false
end
end
...
describe "Exercising View" do
it "clicks a node in the tree control" do
$prvView = $b.frame(:id, 'FRAME_C').document.body.innertext
Timeout.timeout(50) do
spn.fire_event('onmouseup')
end
$curView = $b.frame(:id, 'FRAME_C').document.body.innertext
end
it "Runs only if the view is different", :if => viewDifferent? do
puts "Doing some stuff."
end
end
我的问题是RSpec的正在执行其中的任何评估之前,所有的我的测试过滤器。在上面的例子中viewDifferent?将始终(并且确实)返回false,因为两个全局变量尚未由前面的测试设置。
有没有办法做我在问什么?我一直在试图弄清楚这几天。
对于单元测试,我同意你的看法。虽然我没有进行单元测试。我使用RSpec来帮助对不属于我的代码进行自动化的黑盒功能测试。它在Ruby中也没有开发出来,这样就使得套牌更加困难。我无法知道哪些节点会改变视图,哪些节点不会改变视图。我已经看到示例中使用的隐式过滤器来检查是否存在网络连接,然后在适当的情况下跳过,我希望能够利用该功能以供我使用。如果没有办法做到这一点,那么我将不得不设计我自己的设计。 – 2011-05-13 22:48:10
我不同意你的看法,如果你想根据输入做一个动态测试,例如,如果输入的某个值必须声明一个行为,而在其他类型的输入中你想声明其他类型的行为,那么你必须有条件地运行测试。 – MaicolBen 2015-07-03 18:16:44