2016-06-09 50 views
0

我有下面的類書面OCMock不會在一個新的實例

@implementation B 

- (NSString *)returnMock{ 
    return @"BBB"; 
} 

@end 

返回存根價值,我有以下測試寫着:

- (void)testB { 
    id mockB = [OCMockObject mockForClass:[B class]]; 
    [[[mockB stub] andReturn:@"mock"] returnMock]; 

    //This check is a pass 
    XCTAssertEqualObjects(@"mock", [mockB returnMock]); 

    B *b = [[B alloc] init]; 
    //This check is a fail 
    XCTAssertEqualObjects(@"mock", [b returnMock]); 
} 

我的理解是,如果一個模擬的是爲一個類創建,然後爲它的任何新實例將引用模擬類。

如果這不是真的,任何人都可以幫助我在創建新實例後使第二個斷言通過。

由於

回答

0

有模擬的對象可以被用來代替類的實例的。創建一個模擬對象不會影響類的實例。如果你想在現有的實例中模擬方法,你必須使用部分模擬爲特定的實例