我想使用斷言並在我的ruby代碼中放置評估值(例如:檢查是否創建zip文件,標籤存在,文本區域中的消息等)。我已經提出了一些斷言,如assert @selenium.is_text_present(textMessage)
,但它們不起作用。如何在ruby代碼中放置斷言
請讓我知道是否有任何寶石斷言寶石要安裝。
我想使用斷言並在我的ruby代碼中放置評估值(例如:檢查是否創建zip文件,標籤存在,文本區域中的消息等)。我已經提出了一些斷言,如assert @selenium.is_text_present(textMessage)
,但它們不起作用。如何在ruby代碼中放置斷言
請讓我知道是否有任何寶石斷言寶石要安裝。
對於簡單的斷言,你可能最好關閉滾動你自己的斷言方法取塊:
ruby-1.9.1-p378 > class AssertionError < RuntimeError
ruby-1.9.1-p378 ?> end
=> nil
ruby-1.9.1-p378 > def assert &block
ruby-1.9.1-p378 ?> raise AssertionError unless yield
ruby-1.9.1-p378 ?> end
=> nil
ruby-1.9.1-p378 > assert { 1 > 0 }
=> nil
ruby-1.9.1-p378 > assert { 5 == 12 }
AssertionError: AssertionError
from (irb):8:in `assert'
from (irb):11
from /Users/mr/.rvm/rubies/ruby-1.9.1-p378/bin/irb:17:in `<main>'
在copypastastable形式:
class AssertionError < RuntimeError
end
def assert &block
raise AssertionError unless yield
end
i = 1
assert {i >= 0}
assert { 5 == 12 }
是否有使用一個塊作爲參數而不是簡單的布爾值? – 2015-05-26 21:50:09
如果assert方法在執行「raise ...除非yield」之前檢查其他條件(例如'if DEBUG_ENABLED'),那麼如果該條件返回false,則不會調用yield,因此傳入塊永遠不會被評估。如果該塊所花費的代價很高,這可能會對程序執行時間產生很大影響。 – 2016-03-09 12:56:13
請確保您已經閱讀了[格式化指南](http://stackoverflow.com/editing-help),通知,我們都始終友好,這就是爲什麼我們跳過通常的「嗨/謝謝」部分的消息,並且 - 歡迎來到StackOverflow! – 2010-07-16 11:23:10
認爲這是類似 - http://stackoverflow.com/questions/147969/is-it-idiomatic-ruby-to-add-an-assert-method-to-rubys-kernel-class – carrutherji 2010-07-16 11:31:44