2008-11-03 45 views
0

我正在編寫一個針對Cocoa API的發現測試,因爲我在Mac相關的所有事情上都加緊了。我目前正在嘗試發現URL編碼字符串的最佳方法。使用谷歌工具箱爲Mac我有一個單元測試,我故意導致失敗:STAssertEqualStrings中的轉義序列

NSString* expected = @"ab%%20c"; 
NSString* encoded = @"ab c"; 
STAssertEqualStrings(expected, encoded, @"Expected [%s] actual [%s]", [expected UTF8String], [encoded UTF8String]); 

,並抱怨「從頭P = AB!C」它轉儲輸出是扔我的垃圾。就好像百分號沒有正確逃脫,但我知道它是。我的主要問題是如何獲得一個正確形成的錯誤信息,所以我可以確定我正在處理蘋果而不是橙子?

*更新 了#1除去在原來的職位垃圾。上述故障是故意說明故障消息的問題。我關心的是顯示在失敗消息中的垃圾,因爲它確實沒有詳細說明實際字符串中的內容。失敗說類似「斷言失敗ab [蘋果 - 符號] c!= ab c」我在消息中獲得蘋果字符而不是百分號。在實踐中,編碼將是方法調用的返回,我想使用斷言失敗消息檢查字符串的內容。

+0

我不確定我是否理解這個問題。預期不等於編碼,所以斷言失敗。似乎它工作正常。或者我錯過了什麼? – 2008-11-04 03:49:24

回答

2

令人困惑的是,在編譯時應用了反斜槓轉義,並使用百分號轉義,該轉義應用於類似printf的函數和方法的格式字符串。由於expected沒有被這樣的函數處理,所以百分號不會轉義任何東西。

也就是說,除非StackOverflow正在損壞您的消息,否則百分號應該出現在「ab %% c!= ab c」中。