我正在加快使用 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]通过。
有人可以解释一下我在这里做错了什么吗?
谢谢,
道格