2013-05-08 67 views
0

我正在为将返回一些值的方法做OCMocktest。如何实现void方法。例如计算简单兴趣的方法。但它不会返回任何价值。如何检查计算功能?无效方法的OCMock测试

-(void)calculateSI 
{ 
float Result= PXnXr/100; 
} 

如何使用OCMock检查Result = 100?我可以只为具有返回类型的方法实现吗?

  1. 如何测试calculateSI方法是否被调用?

  2. 如何测试结果是否为100?

+0

要测试calculateSI的结果,您需要返回结果。 – 2013-05-08 08:25:01

回答

0

1)如果你想测试calculateSI是否被调用,你应该嘲笑那个对象。类似这样的:

id calculator = [OCMockObject mockForClass:[SICalculator class]]; 
systemUnderTest.calculator = calculator 

[[calculator expect] calculateSI]; 

[systemUnderTest calculateSomething]; 

[calculator verify]; 

2)您不能测试本地变量值。你应该让结果成为财产或被退回。

+0

什么是systemUnderTest? – Warrior 2013-05-08 06:35:51

+0

“正在测试的系统”(SUT)是您正在测试的课程的常用名称。你说过你想测试这个方法是否被调用,所以你想测试其他人(SUT)和它的依赖关系(计算器)之间的交互。例如,您可能想要测试点击视图中的按钮是否会调用计算器。在这种情况下,视图是SUT。 – juanignaciosl 2013-05-08 07:39:16

0

相反,您可以修改您的方法,将原理量作为参数并返回计算出的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这个,因为你正在测试方法的结果。您可以直接调用该方法并测试返回值。

+0

我正在处理客户端代码。所以我不能改变主代码。这就是为什么我想知道aboot OCMock的无效方法。 – Warrior 2013-05-08 09:03:38

+0

可能是代码没有写入TDD。 – 2013-05-08 09:46:06

+0

我可以联系你吗?请提供否或邮件。我的邮件是[email protected] – Warrior 2013-05-09 06:43:33