转义STAssertEqualStrings中的序列

时间:2008-11-03 22:31:14

标签: objective-c cocoa unit-testing

我正在编写针对Cocoa API的发现测试,因为我在与Mac相关的所有事情上都有所提升。我目前正在尝试发现URL编码字符串的最佳方法。使用适用于Mac的Google工具箱我有一个单元测试,我故意导致失败:

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

它抱怨“ab P!= ab c”它在输出中转储的垃圾扔给我。好像百分号没有被正确转义,但我知道它是。我的主要问题是如何获得正确形成的错误消息,以便我可以确定我正在处理苹果而不是橙子?

*更新 Stackoverflow正在删除原始帖子中的垃圾。上述故障是故意说明故障消息的问题。我关注的是失败消息中显示的垃圾,因为它干净地没有详细说明实际字符串中的内容。失败说的是“断言失败ab [apple-symbol] c!= ab c”,我在消息中得到一个苹果字符,而不是百分号。在实践中,编码将是方法调用的返回,我想使用断言失败消息检查字符串的内容。

1 个答案:

答案 0 :(得分:2)

您在编译时应用反斜杠转义,使用百分号符号转义,这适用于printf格式字符串 - 类似函数和方法。由于expected没有被这样的函数处理,百分号不会逃避任何事情。

那就是说,除非StackOverflow正在破坏你的消息,否则百分号应出现在“ab %% c!= ab c”中。