我正在遍歷網頁上的樹控件。點擊樹中的一些節點將改變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