2017-03-07 3 views
0

나는 cucumber-js를 사용하고 있습니다. 동일한 URL 내에 슬라이드가 있습니다. 내 기능의 경우 테스터에게 URL을 여는 방법을 제공하고 같은 URL에 여러 시나리오를 적용하려고합니다.모든 시나리오에 대해 오이 배경을 한 번 실행할 수있는 태그를 어떻게 제공합니까?

아래 해결 방법의 문제는 모든 시나리오에 대해 URL이 다시 열리고 시작 부분으로 미십시오. 별도의 시나리오로 각 슬라이드 단계를 테스트 할 수는 없습니다.

어떤 도움이나 제안에 감사 예 :

기능 : 평가 슬라이드 사용자의 여행 - 나는 URL/평가를 열려면 개발자 미리 reqisite/

Background: 
    Given I open the url "/valuation/" 

Scenario: Test valuation slide button 
    Given the element "valuationIntro" is visible 
    When I click on the button "valuationIntro.cta" 
    Then I expect that element "valuationSlide1" becomes visible 

Scenario: Test valuation autocomplete 
    Given the element "valuationSlide1.cta" has the class "invalid" 
    When I set "jk5 7kj" to the inputfield "valuationSlide1.autocomplete"   
    Then I expect that element "valuationSlide1.cta" does not have the class "invalid" 

은 내가 사용할 수 있습니다 이해 태그를 사용하지만 배경을 한 번 실행하는 데 태그를 사용할 수있는 방법이 무엇인지 모릅니다.

+0

첫 번째 테스트가 중단 된 곳에서 두 번째 테스트를 계속 진행하려고하는 것처럼 들립니다. 이것은 나쁜 습관이고 오이는 당신을 위해 열심히하기 위해 최선을 다합니다. 각 테스트는 독립적이어야하며 테스트를 실행하면 시스템에 부작용이 없어야합니다. 즉, 성능상의 이유로 백그라운드 단계는 물론 실행 여부에 관계없이 개인적으로 저장하고 후속 실행시에는 아무 것도하지 않을 수 있습니다. – joniba

+0

감사합니다. 백그라운드 단계가 실행되었는지 여부를 어떻게 감지 할 수 있습니까? –

+0

개인적으로 나는 싱글 톤을 광범위하게 사용하여 오이 단계 사이에서 코드를 공유합니다. 싱글 톤이므로 테스트 실행 중에 임의의 상태를 유지할 수 있습니다. 이것이 nodej이기 때문에 생성자를 내보내는 경우를 제외하고는 대부분의 모듈이 효과적으로 싱글 톤입니다. – joniba

답변

0
var executed = false; 

var myStepDefinitionsWrapper = function() { 
    this.Given(/^I open the url "([^"]*)"$/, function (url) { 
     if (!executed) 
      // do some work with url 
      executed = true; 
    }); 
}; 
module.exports = myStepDefinitionsWrapper; 

요점을 단순화했습니다. 나는 상태와 싱글 톤을 사용할 것이다.

+0

고마워,하지만 이건 내 배경에 내가 URL을 여는 것으로 가정합니다. 어떻게 실행 되든, 모든 배경을 탐지합니까? –

+0

당신이 무엇을 요구하고 있는지 확실하지 않습니다. 코드를 작성하지 않고이 문제를 해결할 일반적인 방법을 찾고 있다면 잘 모르겠다. 좋은 접근 방법이라고 생각하지 않는다. HTH. – joniba

+0

의견을 보내 주셔서 감사합니다. 자동화 된 테스트에서 누락 된 차이를 채우고 있다고 생각합니다. 오이가 시험 자체를 설명하는 데 사용할 수없는 이유는 없습니다. 나는 그것이 왜 그렇게 나쁜 생각인지에 대한 좋은 주장을 보지 못한다. "그런 식으로 설계된 것이 아니다". 그래서. 그런 식으로 사용할 수 있습니다. –