我正在遇到路障,我想知道这里出色的集体思想是否有帮助.在ObjC CocoaTouch中,我试图模拟一个接受struct参数并返回结构的对象.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和结构有类似的麻烦吗?如果是这样,处理这些类型的最佳方法是什么?