objective-c - 我如何在 OCMock 中模拟接受句柄作为参数的方法?

标签 objective-c unit-testing mocking handle ocmock

我正在尝试模拟一个具有以下签名等价物的方法:

- (NSDictionary *) uploadValues:(BOOL)doSomething error:(NSError **)error

我希望它返回一个小字典,以便我的测试可以确保代码正确使用字典。但是,无论我做什么,OCMock 总是从该方法返回 nil,无论我如何将其 stub 。在我正在测试的代码中,错误以 nil 开始,这些是我尝试对它进行 stub 的不同方式:

NSError * error = nil;
[[[mock stub] andReturn:someDict] uploadValues:YES error:&error];

[[[mock stub] andReturn:someDict] uploadValues:YES error:nil];

[[[mock stub] andReturn:someDict] uploadValues:YES error:[OCMArg any]];

而且它们都不起作用。 OCMock 是否支持将句柄作为 stub 消息参数?如果支持,正确的方法是什么?

最佳答案

[[[mock stub] andReturn:someDict] uploadValues:YES error:[OCMArg setTo:nil]];

NSError* someError = ...
[[[mock stub] andReturn:someDict] uploadValues:YES error:[OCMArg setTo:someError]];

你也可以这样做

[[[mock stub] andReturn:someDict] uploadValues:YES error:[OCMArg anyPointer]];

但这可能会导致您的代码错误地认为您传回了一个真正的 NSError。

关于objective-c - 我如何在 OCMock 中模拟接受句柄作为参数的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1288918/

相关文章:

objective-c - NSTextView 封闭 ScrollView 在空格键上跳转

ios - 弹出导航后如何从ViewController释放内存

python - 访问了模拟实例上的断言属性

python - 如何对 python unittest 发现测试进行排序?

python - 从存储在变量中的类创建的模拟实例

objective-c - 从 NSBezierPath 中切出一个矩形

unit-testing - NUnit:如果测试时间过长则中止测试

java - 修改 void 函数的输入参数,然后读取

django - 在 Django 的测试中连接模拟和客户端

ios - 双击 UITableView