2013-05-08 7 views
0

일부 값을 반환하는 메서드에 대해서는 OCMocktest를 수행하고 있습니다. void 메소드를 구현하는 방법. 예 : 간단한이자를 계산하는 방법. 그러나 어떤 가치도 반환하지 않습니다. 계산 기능을 어떻게 확인할 수 있습니까?void 메서드에 대한 OCMock 테스트

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

OCMock을 사용하여 결과 = 100을 확인하는 방법은 무엇입니까? 반환 유형이있는 메소드에만 구현할 수 있습니까?

  1. calculateSI 메서드가 호출되는지 여부를 테스트하는 방법은 무엇입니까?

  2. Result = 100인지 테스트하는 방법은 무엇입니까?

+0

calculateSI의 결과를 테스트하려면 결과를 반환해야합니다. –

답변

0

1) calculateSI가 호출되었는지 여부를 테스트하려면 해당 객체를 조롱해야합니다. 이것과 비슷한 것 :

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

[[calculator expect] calculateSI]; 

[systemUnderTest calculateSomething]; 

[calculator verify]; 

2) 로컬 변수 값을 테스트 할 수 없습니다. 결과를 속성으로 만들거나 반환해야합니다.

+0

systemUnderTest 란 무엇입니까? – Warrior

+0

"System Under Test"(SUT)는 실제로 테스트중인 클래스의 공통 이름입니다. 그 메소드가 호출되었는지 여부를 테스트하기를 원했기 때문에 다른 누군가 (SUT)와 종속성 (계산기) 간의 상호 작용을 테스트하려고합니다. 예를 들어,보기에서 단추를 두드리면 계산기가 호출되는지 테스트 할 수 있습니다. 이 경우보기는 SUT입니다. – juanignaciosl

0

대신에 원칙 금액을 인수로 사용하여 아래 표시된 것처럼 계산 된 SI를 반환하도록 메소드를 수정할 수 있습니다.

- (float)calculateSI:(float)inPXnXr 
{ 
    return inPXnXr/100; 
} 

하고 테스트 케이스는 당신이 방법의 결과를 테스트하기 때문에 이것에 대한 OCMock을 사용할 필요가없는

- (void)test__calculateSI__invokeWith300 
{ 
    CalculatorViewController *masterVC = [[CalculatorViewController alloc] init]; 
    float result = [masterVC calculateSI:300.0]; 
    STAssertTrue(result == 3, @"FAILED"); 
} 

될 것입니다. 직접 메소드를 호출하고 리턴 값을 테스트 할 수 있습니다.

+0

나는 클라이언트 코드를 작성 중이다. 그래서 주 코드를 변경할 수 없습니다. 왜 내가 void 메소드에 대한 aboot OCMock을 알고 싶습니다. – Warrior

+0

그 코드는 TDD 용으로 작성되지 않았을 수 있습니다. –

+0

내가 연락 할 수 있습니까? Pls는 no 또는 mail을 제공합니다. 내 메일은 [email protected]입니다. – Warrior