0
我有以下类别:OCMock:测试方法有一个NSDictionary参数被调用
@interface ReportsArchiver
-(void)fileReport:(NSDictionary*)reports;
@end
@interface OfficeManager
@property (nonatomic) ReportsArchiver* reportsArchiver;
-(void) reportIncident:(NSString*)name description:(NSString*)description;
@end
使用OCMock我想测试调用[officeManager reportIncident:@"fire alarm" description: @"false fire alarm"]
当再[officeManager.reportsArchiver fileReport]
获取与字典@{@"name": @"fire alarm", @"description": @"false fire alarm"}
调用。
到目前为止,我已经写了下面的代码,这样做:
OfficeManager* officeManager = [OfficeManager new];
id reportsArchiverMock = OCMClassMock([ReportsArchiver class]);
officeManager.reportsArchiver = reportsArchiverMock;
NSDictionary* expectedReportDictionary = @{@"name": @"fire alarm", @"description": @"false fire alarm"};
[officeManager reportIncident:@"fire alarm" description: @"false fire alarm"];
// This call will fail because it checks for object equality, not dictionary equality.
OCMVerify([reportsArchiverMock fileReport:expectedReportDictionary]);
我如何可以验证该[reportsArchiverMock fileReport:{(NSDictionary*)]
被调用,相同的NSDictionary使用OCMock?
这很奇怪。使用验证或预期应该没有区别。如果存在对象相等与字典相等的问题,那么这也应该与期望一起发生。 (我说这是OCMock的维护者。)你介意在Github上打开一个问题,最好对OCMock进行失败的单元测试吗? –
感谢您的回复@ErikDoernenburg。我会尝试通过单元测试来重现这一点,并打开一个问题。 –