2008-11-03 46 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”中。