我遇到了障碍,我想知道这里聪明的集体思想是否可以提供帮助。在 ObjC CocoaTouch 中,我试图模拟一个接受结构参数并返回结构的对象。OCMock 咳出了一个毛球,所以我试着用 Hamcrest 火柴盒包裹起来。没有死。我正在测试的函数/方法如下所示:
- (CLLocationCoordinate2D)pixelToLatLong:(CGPoint)aPoint;
我使用这样的代码:
#define OCMOCK_STRUCT(atype, variable) [NSValue value:&variable withObjCType:@encode(atype)]
-(void) testMyWidget
{
CLLocationCoordinate2D ulLL = (CLLocationCoordinate2D){123,456};
CLLocationCoordinate2D lrLL = (CLLocationCoordinate2D){654,321};
[[[(id)myObj expect] andReturn:OCMOCK_STRUCT(CLLocationCoordinate2D, ulLL)] pixelToLatLong:(CGPoint){0,0}];
[[[(id)myObj expect] andReturn:OCMOCK_STRUCT(CLLocationCoordinate2D, lrLL)] pixelToLatLong:(CGPoint){320,460}];//lower right point
}
这有点工作。因此,在我正在测试的对象中,我进行了必要的必要编辑以在构建信息窗口中获得一个绿色条...错误..绿色按钮。当我确定我的测试应该通过时,我得到断言失败错误。这些错误告诉我该方法被意外调用并将这些结构的值列为问号。我尝试用 Hamcrest 匹配器包装结构,但我无处可去。我正准备破解我的调试器,这无疑会告诉我出了什么问题。这里有人在 OCMock/Hamcrest 和结构方面遇到过类似的问题吗?如果是这样,处理这些类型的最佳方法是什么?