![](/img/trans.png)
[英]AASM + Rspec - How to ignore/disable/skip the transition callbacks in a tests?
[英]how to skip x number of tests in rspec
假設我們有一個需要5分鍾的測試套件
讓我們說它失敗了90%
讓我們說它失敗了95%
而不是運行3次(一次到90次,一次到95次,一次100%)~14分鍾
我想運行它兩次 - ish(一次從0到90,一次從90到95,95到100,並且一直到確保一切正常)如果我快速重新啟動它~10- 11分鍾
所以當它失敗時,我想輸出規格編號(根據當前的測試)然后我需要從命令行再次運行時從那個數字開始,所以,我如何讓rspec運行使用的東西像rspec spec/ --startat 321
我不認為這樣的事情會起作用,因為RSpec默認以隨機順序運行測試,以確保它們不依賴於它們的順序。 也許一個合適的解決方案是記下失敗的測試並運行那些。 你可以運行這樣的特定測試:
rspec /spec/controllers/example_controller_spec.rb:19
其中19
是您的測試所在的行。 修復所有失敗的測試后,您可以重新運行整個測試套件以確保一切正常。
您可以通過在rspec中使用--tag
選項來解決您遇到的問題。 您可以將標記應用於失敗的組,然后編寫一個小腳本以按您想要的順序執行它們。 這是標簽上的rspec docs頁面 。
使用--tag(或-t)選項按標記過濾示例。
標記可以是簡單名稱或名稱:值對。 在第一種情況下,將過濾以:name => true的示例。 在第二種情況下,將使用:name => value的示例進行過濾,其中value始終為字符串。 在這兩種情況下,名稱都會轉換為符號。
標簽也可以通過在標簽之前添加〜來排除示例。 例如~tag將排除標記為:tag => true和~tag的所有示例:value將排除標記為:tag => value的所有示例。
為了與Cucumber語法兼容,標簽可以選擇以@符號開頭,這將被忽略。
doc頁面中的一些示例:
describe "group with tagged specs" do
it "example I'm working now", :focus => true do; end
it "special example with string", :type => 'special' do; end
it "slow example", :skip => true do; end
it "ordinary example", :speed => 'slow' do; end
end
這比使用行號或手動排除單個示例更容易。 希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.