Возвращение пользовательского описания и значений debugDescription для фиктивных объектов
Я часто использую OCMock с отличными матчерами OCHamcrest. Но я часто сталкиваюсь с сообщениями об ошибках тестирования, которые не так полезны, как могли бы быть. Это связано с тем, что вывод OCHamcrest в значительной степени зависит от значения, возвращаемого методом "описания" объектов, но реализация описания OCMockObject по умолчанию является очень общей.
Есть ли рекомендуемый способ, чтобы фиктивные объекты возвращали пользовательское описание?
Я пытался вставить метод "description" в мои фиктивные объекты, но это не сработало.
В качестве обходного пути я создал OCClassMockObject+Description
расширение категории, которое добавляет setMockDescription:
метод, но я надеюсь, что есть более официально поддерживаемое решение. (Если нет, то, возможно, я отполирую и отправлю запрос на извлечение.)
Вот примеры некоторых результатов, которые я хотел бы улучшить...
Пример утверждения № 1
assertThat(recommendedSong, is(mockSong1));
Сообщение об ошибке:
Expected <OCMockObject[SongBar]>, but was <OCMockObject[SongBar]>
Пример утверждения № 2
assertThat(playlist.songs, contains(mockSong1, mockSong2, nil));
Сообщение об ошибке:
Expected a collection containing [<OCMockObject[SongBar]>, <OCMockObject[SongBar]>], but item 0: was <OCMockObject[SongBar]>