Objective c 测试“isEqual”和“hash”方法
这里有一个非常简单的“bug场景”:我有一个非常有效的测试Objective c 测试“isEqual”和“hash”方法,objective-c,unit-testing,ocmock,Objective C,Unit Testing,Ocmock,这里有一个非常简单的“bug场景”:我有一个非常有效的测试MYPerson类(覆盖了'isEqual'和'hash'方法)。然后我决定添加MYJob类的一个新属性job,并忘记修改isEqual:和hash方法。结果是,当两个MYPerson实例具有不同的jobs时,这两种方法都返回YES。看起来像是单元测试捕获的完美bug,但由于OCMock的限制,我在编写这样的测试时遇到了麻烦-显然isEqual和hash方法都不能被存根。如果我在测试中使用实际的MYJob对象,我将测试MYJob而不是MY
MYPerson
类(覆盖了'isEqual'和'hash'方法)。然后我决定添加MYJob
类的一个新属性job
,并忘记修改isEqual:
和hash
方法。结果是,当两个MYPerson
实例具有不同的job
s时,这两种方法都返回YES
。看起来像是单元测试捕获的完美bug,但由于OCMock
的限制,我在编写这样的测试时遇到了麻烦-显然isEqual
和hash
方法都不能被存根。如果我在测试中使用实际的MYJob
对象,我将测试MYJob
而不是MYPerson
实现,对吗
有人对此有好的解决方案或想法吗?像这样的东西怎么样:
-(void)testshouldnotbequalondifferentjob{MYPerson*p1=[MYPerson new];*p1.job=[MYJob new];MYPerson*p2=[MYPerson new];xctasert([p1 isqual:p2]);}
像这样的东西怎么样:-(void)testshouldnotbequalondifferentjob{MYPerson*p1=[MYPerson new];*p1.job=[MYJob new];MYPerson*p2=[MYPerson new];xctasert([p1 isEqual:p2]);}