2017-05-10 10 views
0

모든 시나리오 전에 REALLY를 설정해야하는 경우 BeforeScenario가 사용됩니다.BeforeScenario vs Given을 사용하는 Behat

경우에 따라 일부 시나리오에서는 설정해야하지만 중요한 부분에서는 설정해야 할 사항이 있습니다. 예를 들어 시나리오에 "일반 사용자 계정"이 존재해야하는 경우 해당 사용자로 로그인하여 작업을 수행합니다.

@RegularUser로 태그 지정된 각 시나리오에 대해 실행되는 @BeforeScenario @RegularUser 메서드를 만들 수 있습니다.

Scenario login as a regular user 
    Given a regular user exists 
    And I am on the login page 
    When I login to a regular user account 
    Then the welcome screen is displayed 

은 "일반 사용자가 존재"일반 사용자를 생성하는 방법과 관련된 것에

@RegularUser 
Scenario login as a regular user 
    Given I am on the login page 
    When I login to a regular user account 
    Then the welcome screen is displayed 

대안이 : 그래서 시나리오처럼 보이는 끝.

첫 번째 방법으로 @AfterScenario @RegularUser를 만들어서 시나리오 종료 후 사용자를 삭제할 수 있습니다. 그래서 그것은 "좋은 일"처럼 보입니다.

그러나 BDD 관점에서 제 2 접근법이 더 멋지게 보입니다. 그러나 시나리오의 끝에서 사용자를 삭제하는 일은 아무 것도 없습니다.

어떤 접근 방식이 더 나은 방법입니까?

답변

1

내 의견으로는, 나는 첫번째 선택권에 갈 것입니다.

문제는 일반적으로이 시나리오의 컨텍스트를 추가해야하기 때문에 두 옵션은, 그렇게 잘되지 않습니다 점이다 :이 시나리오를 실행하면 무슨 의도를 표시해야합니다

In order to .. 
As a Regular User 
I need to .. 

. RegularUser을 만드는 과정에서는 시나리오 자체에 가치를 추가하지 않습니다.

그런 다음 일반 사용자를 갖는 시나리오에서 확인해야하는 경우에는 정상입니다. 그러나 제 의견으로는 요점이 아닙니다 - 두 번째 옵션은 그리 좋지 않습니다 - 우리는 그런 정보를 추가 할 수있는 맥락이 있습니다.

그 이유는, 나는 첫 번째 옵션 (이상적은 아니지만 더 나은 두 번째) 좋은 해결책이라고 생각합니다.

문맥에 따라 사용자를 설정하는 Behat 기능에 대해서는 알지 못하지만 태그 옵션은 더욱 탄력적이어야합니다.