3

TnSettings のモックを作成したいです。はい、次の方法でコードを作成すると機能します。問題は、ケースごとにモック コードを作成する必要があることです。例外を報告します。最新の OCMock V2.01 を使用しています。

私の質問は、なぜOCMockにそのような制限があるのですか? それとも、正しく使用しないのは私のせいですか?

事前に感謝します。

- (void) testFormattedDistanceValueWithMeters {         
        mockSettings = [OCMockObject mockForClass:[TnSettings class]];
        mockClientModel = [TnClientModel createMockClientModel];
        [[[mockClientModel expect] andReturn:mockSettings] settings];
        [[[mockSettings expect] andReturn:[NSNumber numberWithInt:0]] preferencesGeneralUnits];

        NSNumber *meters = [NSNumber numberWithDouble:0.9];
        distance = [NSString formattedDistanceValueWithMeters:meters];
        STAssertEqualObjects(distance, @"0.9", @"testformattedEndTimeForTimeInSeconds failed");

        //------------- Another case -----------------
        mockSettings = [OCMockObject mockForClass:[TnSettings class]];
        mockClientModel = [TnClientModel createMockClientModel];
        [[[mockClientModel expect] andReturn:mockSettings] settings];
        [[[mockSettings expect] andReturn:[NSNumber numberWithInt:0]] preferencesGeneralUnits];

        meters = [NSNumber numberWithDouble:100.9];
        distance = [NSString formattedDistanceValueWithMeters:meters];
        STAssertEqualObjects(distance, @"101", @"testformattedEndTimeForTimeInSeconds failed");
}
4

1 に答える 1

5

あなたの質問やコードを完全に理解しているかどうかわかりません。ただし、 expectstubの違いにつまずいたと思います。

これはあなたが考えていたことですか?

- (void) testFormattedDistanceValueWithMeters {         
    mockSettings = [OCMockObject mockForClass:[TnSettings class]];
    mockClientModel = [TnClientModel createMockClientModel];
    [[[mockClientModel stub] andReturn:mockSettings] settings];
    [[[mockSettings stub] andReturn:[NSNumber numberWithInt:0]] preferencesGeneralUnits];

    NSNumber *meters = [NSNumber numberWithDouble:0.9];
    distance = [NSString formattedDistanceValueWithMeters:meters];
    STAssertEqualObjects(distance, @"0.9", @"testformattedEndTimeForTimeInSeconds failed");

    meters = [NSNumber numberWithDouble:100.9];
    distance = [NSString formattedDistanceValueWithMeters:meters];
    STAssertEqualObjects(distance, @"101", @"testformattedEndTimeForTimeInSeconds failed");

}

于 2012-07-03T15:40:58.290 に答える