0

OCMock を使用して iOS でモックを作成する速度に慣れています。私は、設定した期待に基づいて、失敗するはずのときに合格する単純なモック単体テストを作成しました。

コードは次のとおりです。

// Scientific Calculator class
@implementation ScientificCalculator

- (NSNumber *)sqrt:(NSNumber *)input {
    return [NSNumber numberWithDouble:sqrt([input doubleValue])];
}

@end

// unit test
-(void) testScientificCalculatorSqrt {

    NSNumber *input = [NSNumber numberWithDouble:4];
    ScientificCalculator *scientificCalculator = [[ScientificCalculator alloc] init];

    NSNumber *expected = [NSNumber numberWithDouble:2];

    NSNumber *result = [scientificCalculator sqrt:input];

    STAssertEquals([result doubleValue], [expected doubleValue], nil);

}

// unit test
-(void)testScientificCalculatorMocking {

    // setup
    NSNumber *input = [NSNumber numberWithDouble:44];
    id scientificCalculator = [OCMockObject mockForClass:[ScientificCalculator class]];

    // expect
    NSNumber *expected = [NSNumber numberWithDouble:2];
    [[[scientificCalculator expect] andReturn:expected] sqrt:input];

    // test
    NSNumber *result = [scientificCalculator sqrt:input];

    // verify
    STAssertEquals([result doubleValue], [expected doubleValue], nil);

    [scientificCalculator verify];
}

testScientificCalculatorMocking単体テストはへの44入力として使用しますsqrt。期待値を に設定しました2。両方ともSTAssertEquals成功[scientificCalculator verify]します。

誰かが私がここで間違っていることを説明できますか?

ありがとう、
ダグ

4

2 に答える 2

1

expectedsqrt が 44 ( ) で呼び出されたときに2 ( ) を返すようにモックに指示しましたinput。したがってresult、変数には値 2 が含まれます。次に、result(2) とexpected(2) を比較します。これはパスします。

于 2013-06-06T23:12:58.173 に答える