2013-05-30 51 views
1

不知道爲什麼失敗了道場與當地的單元測試比較失敗

doh.t(formatedValue.localeCompare("16,91 $CA") === 0, "incorrect french formatting") 

的FormattedValue的肯定是「16,91 $ CA」,所以我知道這是一個比賽。 Bu twhen我嘗試在語法中添加=== 0,我得到「Binary operation argument is not assignable to type Boolean」

我不明白,是不是這樣做,評估爲真/當我做了formatedValue.localeCompare(「56,96 $ CA」)=== 0?

+2

爲什麼您使用localeCompare可言,如果你只是想測試平等?我無法複製這個,你能提供一個最小的測試用例嗎?例如'doh.t(「foo bar」.localeCompare(「foo bar」)=== 0,「wrong!」)'適合我... –

+0

如果你使用===或.localeCompare – PositiveGuy

+1

好吧,意圖是它重要的主要原因。 localeCompare用於比較(排序/字符串化)字符串,並且當它們相等時返回0(一個falsy值),因此無論如何,您必須使用'=='或'===',這很簡單,只要執行'= ==「,因爲你實際上並不關心哪個字符串大於或小於。 –

回答

0

localeCompare是爲字符串比較而設計的,而不是相等性測試。相比之下,我的意思是測試一個字符串是否大於或小於另一個字符串,這對排序很有用。既然你不想串排序,測試相等可能是簡單的:

doh.t(formatedValue === "16,91 $CA", "incorrect french formatting"); 

甚至更​​好:

doh.is(formatedValue, "16,91 $CA", "incorrect french formatting");