私は、優れた OCHamcrest マッチャーで OCMock を頻繁に使用します。しかし、あまり役に立たないテスト失敗メッセージに遭遇することがよくあります。これは、OCHamcrest の出力がオブジェクトの「説明」メソッドによって返される値に大きく依存しているにもかかわらず、OCMockObject のデフォルトの説明の実装が非常に汎用的であるためです。
モック オブジェクトがカスタムの説明を返すようにするための推奨される方法はありますか?
モック オブジェクトで「説明」メソッドをスタブしようとしましたが、うまくいかないようです。
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]>