有一条规则说你应该如何模拟你在Objective C/Cocoa中没有的类? (例如NSDate)
只有您拥有的模拟对象。
我想我理解这个原因 - 框架提供的模拟类可能会导致奇怪的行为。
有什么选择?
当你需要使用NSDate的虚拟日期时呢?
在过去,我将日期方法从NSDate调到我自己的类--NSDateMock - 但有些事情告诉我这是错误的!
One Solution - Wrapper?
创建一个NSDate的包装,但你必须实现所有的方法。
或者你会实施你正在使用的?这似乎是一个混乱的做法。
我的问题
什么是你不拥有如NSDate的嘲讽类的好办法吗?
更新1
我发现this article on mocking这似乎意味着,写一个瘦包装是要走的路。我不太清楚为什么,但我觉得这是一个黑客。再次,它可以使代码更具表现力。
但是这引发了问题,在NSDate的情况下,你是否需要将包装类注入每个需要知道日期的类?当然不是......
更新2
已经有关于这个问题的一些很好的答案,但我仍然坚持寻找其他的答案 - 必须有这样的明确的方式,肯定?我仍然没有看到类别如何给我一个我可以控制的虚拟对象。
只是好奇 - 为什么你想创建模拟日期?如果不了解你的设置,我的第一个想法是想知道为什么你需要首先嘲笑经过充分测试的系统课程。 – 2012-02-18 22:05:44
@Tim如果一个应用程序正在处理时间敏感的操作,我可能想要模拟发生的事情,比如接近午夜。我将如何实现这一目标? – 2012-02-19 00:47:55