我正在为将返回一些值的方法做OCMocktest。如何实现void方法。例如计算简单兴趣的方法。但它不会返回任何价值。如何检查计算功能?无效方法的OCMock测试
-(void)calculateSI
{
float Result= PXnXr/100;
}
如何使用OCMock检查Result = 100?我可以只为具有返回类型的方法实现吗?
如何测试calculateSI方法是否被调用?
如何测试结果是否为100?
我正在为将返回一些值的方法做OCMocktest。如何实现void方法。例如计算简单兴趣的方法。但它不会返回任何价值。如何检查计算功能?无效方法的OCMock测试
-(void)calculateSI
{
float Result= PXnXr/100;
}
如何使用OCMock检查Result = 100?我可以只为具有返回类型的方法实现吗?
如何测试calculateSI方法是否被调用?
如何测试结果是否为100?
1)如果你想测试calculateSI是否被调用,你应该嘲笑那个对象。类似这样的:
id calculator = [OCMockObject mockForClass:[SICalculator class]];
systemUnderTest.calculator = calculator
[[calculator expect] calculateSI];
[systemUnderTest calculateSomething];
[calculator verify];
2)您不能测试本地变量值。你应该让结果成为财产或被退回。
什么是systemUnderTest? – Warrior 2013-05-08 06:35:51
“正在测试的系统”(SUT)是您正在测试的课程的常用名称。你说过你想测试这个方法是否被调用,所以你想测试其他人(SUT)和它的依赖关系(计算器)之间的交互。例如,您可能想要测试点击视图中的按钮是否会调用计算器。在这种情况下,视图是SUT。 – juanignaciosl 2013-05-08 07:39:16
相反,您可以修改您的方法,将原理量作为参数并返回计算出的SI,如下所示。
- (float)calculateSI:(float)inPXnXr
{
return inPXnXr/100;
}
和测试用例将成为
- (void)test__calculateSI__invokeWith300
{
CalculatorViewController *masterVC = [[CalculatorViewController alloc] init];
float result = [masterVC calculateSI:300.0];
STAssertTrue(result == 3, @"FAILED");
}
你不需要使用OCMock这个,因为你正在测试方法的结果。您可以直接调用该方法并测试返回值。
要测试calculateSI的结果,您需要返回结果。 – 2013-05-08 08:25:01