gpt4 book ai didi

ios - OCMock。为什么第二个测试通过了?

转载 作者:行者123 更新时间:2023-11-28 22:32:40 27 4
gpt4 key购买 nike

我正在加快使用 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 的输入。我将期望值设置为 2STAsertEquals[scientificCalculator verify] 均成功通过。

有人可以解释一下我在这里做错了什么吗?

谢谢,
道格

最佳答案

当用 44 (input) 调用 sqrt 时,您已经告诉 mock 返回 2 (expected)。因此,result 变量将包含值 2。然后您将比较 result (2) 和 expected (2),这将通过。

关于ios - OCMock。为什么第二个测试通过了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16973550/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com