2016-07-25 25 views
0

在Ruby單元測試中,我該如何聲明一個字符串與另一個字符串匹配,即使套管可能不同?我想避免消毒這兩個字符串來匹配incase我需要回來做一些調查,但同時他們是相同的結果。Ruby單元測試聲明匹配不區分大小寫的字符串

e.g assert_match 'Test', 'TEST' 

我試着assert_match捏造作出區分大小寫的比較,但我迄今沒有運氣,我不能讓過去的正則表達式的老隱式轉換爲字符串。

module Test::Unit::Assertions 
    def assert_match matcher, obj, msg = nil 
    msg = message(msg) { "Expected #{mu_pp matcher} to match #{mu_pp obj}" } 
    assert_respond_to matcher, :"=~" 
    matcher = Regexp.new Regexp.escape matcher if String === matcher 
    assert matcher =~ /#{obj}/i, /#{msg}/i 
    end 
end 
+0

而絕對downcase是最容易爲這種情況下,你可以使用'assert_match /測試/我,「TEST'' [示例](HTTP:// rubular.com/r/ncKw2ZIowQ)。 'assert_match'需要一個「匹配器」(正則表達式匹配)和「obj」值來嘗試和匹配。 「msg」只是在失敗時顯示的消息。爲了實現這種動態,你可以簡單地使用'assert_match /#{matcher}/i,value',其中匹配器是匹配的字符串,value是要比較的字符串。 – engineersmnky

回答

3

我會在兩個字符串上使用downcase

assert_equal "expected".downcase, actual.downcase 

或寫自己的方法:

def assert_equal_case_insensitive(expected, actual) 
    assert_equal expected.downcase, actual.downcase 
end 
相關問題