짧은 답변 : 번호
나는 그것이 매우 유용한 기능처럼 보일 수 있습니다 알고 있지만,이 단계/깨지기 쉬운 테스트 리드 시나리오 사이 unnecesary 의존성을 일으키는 원인이 매우 빨리 당신을 물린 것이다.
해결 방법은 컨텍스트 파일을 기능 파일과 PHP 코드 사이의 다리 역할을하는 것입니다. 즉, 컨텍스트 파일 메서드가 짧고 대부분의 작업을 다른 개체에 위임한다는 의미입니다.
/**
* @Given I open the product page
*/
public function iOpenTheProductPage()
{
$this->productPage->open();
}
/**
* @Given I add a :product to the cart
*/
public function iAddProductToTheCart($product)
{
$this->productPage->addToCart($product);
}
/**
* @Given I have an item in the cart
*/
public function iHaveAnItemInTheCart()
{
// reuse
$this->productPage->open();
$this->productPage->addProduct('Behat t-shirt');
// ... or put the items directly to the db!
}
는 또한, 실제로 카트에 항목을 추가하는 것은 우리가 테스트하고 내용에 따라 약간 차이가있을 수 있습니다 : 컨텍스트 사이에 중복이 없다 이런 식으로, 당신은 단순히 다른 개체를 호출합니다.
"장바구니에 담기"시나리오에서 작업하는 경우 페이지를 방문하여 장바구니에 제품을 추가하는 과정을 거쳐야 할 수 있습니다.
그러나 "헤더의 미니 카트보기"시나리오를 진행하는 경우 테스트 스위트를 조금 더 빠르게 만들려면 바로 가기가 필요할 수 있습니다. givens에서 "라고 말하면 카트에 상품이 있습니다."라고 말하면 항목이있는 데이터베이스/세션 /에 직접 입력 할 수 있습니다. 다른 시나리오에서 장바구니에 항목을 추가하는 방법을 다뤘으므로 이러한 바로 가기를 사용할 수 있습니다.
그런데 웹 애플리케이션 테스트를 자동화한다면 page objects과 같은 패턴이 매우 유용 할 것입니다.