Escape-последовательности в STAssertEqualStrings - PullRequest
0 голосов
/ 04 ноября 2008

Я пишу тест на обнаружение с помощью API-интерфейса Cocoa, поскольку я разрабатываю все, что связано с Mac. В настоящее время я пытаюсь найти лучший способ для URL-кодирования строки. Используя набор инструментов Google для Mac, у меня есть модульный тест, который я преднамеренно вызывает сбой в:

 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 Ответ

2 голосов
/ 04 ноября 2008

Вы путаете экранирование обратной косой черты, которое применяется во время компиляции, с экранированием знака процента, которое применяется для форматирования строки с помощью printf -подобных функций и методов. Поскольку expected не обрабатывается такой функцией, знаки процента ничего не пропускают.

Тем не менее, если StackOverflow не искажает ваше сообщение, знаки процента должны присутствовать в «ab %% c! = Ab c».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...