2014-10-02 3 views
0

Behat 테스트를 사용하여 청구서 수신 카드의 타사 웹 서비스를 테스트하고 있습니다. 각 테스트는 금액으로 웹 서비스에 청구 요청을 보내고 나머지 잔액을 되돌려받습니다. 예상되는 응답을 변수로 사용하는 방법이 있습니까? 예 :Behat 기능 - 계산 된 예상 값

  1. 카드 잔액 받기.
  2. 5 달러 청구서. 예상 잔액은 원래 잔액에서 5를 뺀 값이어야합니다.
  3. 10 달러 청구서. 예상 잔고는 이전 잔액에서 10을 뺀 것이어야합니다.

"예제"방법을 사용하여 테스트에 전달할 값 테이블과 예상되는 결과를 만들었지 만 테스트를 수행 할 때마다 응답 값의 전체 테이블을 업데이트합니다. 테이블의 첫 번째 값을 업데이트하고 나머지는 계산해야합니다. 이것이 가능한가요, 그렇다면 어떻게 될까요? 당신이 원하는 질문에서

| amount | result       | 
| 5 | 100        | 
| 10 | previous result - current amount | 

답변

0

그것의 매우 명확하지 :

다음은 내가 달성을 기대하고 무엇의 예입니다. 이것이 당신의 기능에서 단언하고자하는 고정 값이라면, 이것을하는 유일한 방법은 앱의 초기 균형을 설정하는 것입니다. '@beforeScenario'후크를 통해이 작업을 수행하는 것이 가장 쉬운 해결책 일 것입니다 (시나리오 개요에서 매번 그렇게 할 수 없기 때문에).

또는 스위트에서 잔액을 수정할 수없는 경우 유일한 방법은 다음과 같이하는 것입니다. 실제 가치에 위배되는 것으로 보일지 모르지만 실제로는 똑같습니다. Gherkin 언어 (언어라고 부를 수있는 경우)는 어떤 작업도 허용하지 않으며 시나리오 개요는 아마도 가장 동적 인 부분 일 것입니다.

상황

protected $balance; 

/** 
* @Give /^I know the balance$/ 
*/ 
public function updateBalance() { 

    // API call to get the balance… 

    $this->balance = API::getBalance(); 
} 

/** 
* @When /^I bill the card for (\d+) dollars$/ 
*/ 
public function billCard($amount) { 

    // API call to bill the card… 

    API::billCard($amount); 
} 

/** 
* @Then /^the balance should reduce by (\d+) dollars$/ 
*/ 
public function assertBalance($amount) { 

    // API call to verify the balance was reduced correctly, don't forget to cast if necessary. 

    if ($this->balance - $amount === ($currentBalance = (int) API::getBalance())) { 
     $this->balance = $currentBalance; 
    } else { 
     throw new Exception(); 
    } 
} 

기능

Scenario Outline: … 
    Given I know the balance 
    When I bill the card for <amount> dollars 
    Then the balance should reduce by <amount> dollars 

    Examples: 
     | amount | 
     | 5  | 
     | 10 | 
+0

그래, 내가 현재하고있는 중이 것입니다. 불행히도, PM은이 기능의 결과를보고 싶어합니다. 그녀는 첫 번째 값이 지정된 결과 열을보고 싶어하고 이후 값은 위의 결과에서 금액 열의 값을 뺀 값입니다. – user3154922

+0

이것이 귀하가 필요로하는 것이거나 다른 것을 의미합니까? :) –

+0

이것은 내가 필요로하는 것이 아니라, 지금 내가 사용하고있는 것입니다. 그녀가보고 싶은 것을 보여주기 위해 나의 예를 업데이트했습니다. – user3154922