正确使用 OCMock 和 Singleton

问题描述

我想知道使用单例的正确方法是什么。 我已阅读以下Mocking Singletons 该帖子很旧,现在我们在 Ocmock 的帮助下使用 OCMPartialMock,例如:

@interface ManagerVisitorTests : XCTestCase
@property (nonatomic) id partialManager;
@property (nonatomic) id partialHelper;

@end

@implementation ManagerVisitorTests

static Nsstring *const key = @"key"; 
- (void)initSDKWithoutVisitor {
    self.partialManager = OCMPartialMock([manager sharedManager]);
    NSDictionary *decodedAppkey = @{};
    OCMStub([self.partialManager methods:Ocmock_ANY]).andReturn(decodedAppkey);
}

- (void)testinitNoVisitor {
    [self initSDKWithoutVisitor];
    [self.partialManager initSDKWithoutVisitor:key];
    XCTAssertFalse([manager sharedInstance].isInitCalled,@"called");
    //OR
    XCTAssertFalse([self.partialManager sharedInstance].isInitCalled,@"called");
    [self stopAllMocks];
}

- (void)stopAllMocks {
    [self.partialManager stopMocking];
    [self.partialHelper stopMocking];
    self.partialManager = nil;
    self.partialHelper  = nil;
}


@end

我必须承认,我并不完全理解 Ocmock 在底层是如何工作的,但似乎 OCMPartialMock 应该根据文档完成这项工作 这意味着使用对真实对象的引用,甚至包括对象调用自身的方法中的self,也会受到存根和期望的影响

请告知对于单身情况是否是一种好方法

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)