objective-c - 如何模拟类方法(+)?

标签 objective-c unit-testing mocking static-methods ocmock

<分区>

下面的代码需要写单元测试,我想对类方法canMakePayments做mock,返回yes or no,目前没有找到好的方法,因为canMakePayments是一个类方法(+),好像所有的OCMock方法都是全部用于实例方法(-)。

你们的任何建议或讨论将不胜感激。谢谢。

// SKPaymentQueue.h
// StoreKit
if ([SKPaymentQueue canMakePayments]){
   ....
}
else{
   ...
}

最佳答案

一种方法是将类方法包装在您自己的实例方法中:

-(BOOL)canMakePayments {
    return [SKPaymentQueue canMakePayments];
}

然后你模拟那个方法:

-(void)testCanHandlePaymentsDisabled {
    Foo *foo = [[Foo alloc] init];
    id mockFoo = [OCMockObject partialMockForObject:foo];
    BOOL paymentsEnabled = NO;
    [[[mockFoo stub] andReturnValue:OCMOCK_VALUE(paymentsEnabled)] canMakePayments];

    // set up expectations for payments disabled case
    ...

    [foo attemptPurchase];
}

关于objective-c - 如何模拟类方法(+)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8427044/

相关文章:

ios - NSDictionaries 的 NSArray 到 NSArrays 的 NSDictionary

iphone - UILabel 背景颜色

python - 如何使用 Python 的 'unittest' 对写入文件的函数进行单元测试

ruby-on-rails - Rspec 3 Rails 4 模拟链式方法调用带参数

ios - 在Restkit中设置映射的rootkeypath

来自 NSString 的 iOS SecKeyRef

javascript - 在单元测试 AngularJS 服务时注入(inject)依赖服务

java - 如何设计单元测试类

c++ - 轻松编写保持状态的模拟

java - 如何在java中模拟类而不创建接口(interface)