Возвращение пользовательского описания и значений 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]>

0 ответов

Другие вопросы по тегам