0

OCMock を使い始めたばかりなので、ご容赦ください。ドキュメントと多数の例を調べてきましたが、まだ決定的な答えを見つけていません。たとえば、静的メソッド内で init 呼び出しをモックアウトすることは可能ですか。

+ (NSString *)addHeaderToRequest:(NSString *)request namespace:(NSString *)namespace
{        
    CTTeleInfo *netInfo = [[CTTeleInfo alloc] init];
    CTCarrier *carrier = [netInfo subscriberCell;
    NSString *mobileNetwork = [carrier carrierName];
    if ( mobileNetwork == nil )
        mobileNetwork = @"Unknown";

}

コードを変更せずに CTTeleInfo オブジェクトをモックアウトすることは可能ですか?

4

1 に答える 1

1

これは OCMock がお手伝いできることではありません。クラス メソッドをモックできたとしても (まだできません)、netInfo オブジェクトの作成を、モックが上書きできるメソッドに抽出する必要があります。

コードを変更できる場合、明らかな解決策は次のとおりです。

+ (NSString *)addHeaderToRequest:(NSString *)request namespace:(NSString *)namespace
{   
    [self addHeaderToRequest:request namespace:namespace carrier:[[CTTeleInfo alloc] init]];
}

+ (NSString *)addHeaderToRequest:(NSString *)request namespace:(NSString *)namespace carrier:(CTCarrier *)carrier
{ 
    NSString *mobileNetwork = [carrier carrierName];
    if ( mobileNetwork == nil )
        mobileNetwork = @"Unknown";
}
于 2012-08-23T15:20:31.373 に答える