我经常使用OCMock和优秀的OCHamcrest匹配器。但是我经常会遇到测试失败消息,这些消息并不像它们那样有用。这是因为OCHamcrest输出很大程度上依赖于对象的“description”方法返回的值,但是OCMockObject的默认描述实现非常通用。
是否建议让模拟对象返回自定义说明?
我已经尝试在我的模拟对象上存根“描述”方法,但这似乎不起作用。
作为一种解决方法,我创建了一个OCClassMockObject+Description
类别扩展,添加了setMockDescription:
方法,但我希望有一个更正式支持的解决方案。 (如果没有,也许我会抛光并提交拉动请求。)
以下是我想改进的一些结果的例子......
assertThat(recommendedSong, is(mockSong1));
Expected <OCMockObject[SongBar]>, but was <OCMockObject[SongBar]>
assertThat(playlist.songs, contains(mockSong1, mockSong2, nil));
Expected a collection containing [<OCMockObject[SongBar]>, <OCMockObject[SongBar]>], but item 0: was <OCMockObject[SongBar]>