을 나는 특정 사이트의 모든 페이지를 방문하고 싶었 유사한 사용 사례가 있었다 지도에는 죽은 링크가 없는지 확인하십시오. 나는 에 접근하여 동적으로 단계의 배열을 생성 한 다음 Behat에 의해 반환되고 처리되었습니다. 인위적인 단계 인 "페이지를 출력"을 추가하여 콘솔에서 현재 어떤 페이지가 테스트되는지 확인할 수 있도록해야했습니다. 다음과 같이
/**
* @Then /^I should access all pages of site map "([^"]*)"$/
*/
public function iShouldAccessAllPagesOfSiteMap($selector) {
$page = $this->getSession()->getPage();
$locator = sprintf('#%s a', $selector);
$elements = $page->findAll('css', $locator);
$steps = array();
foreach ($elements as $element) {
/** @var \Behat\Mink\Element\NodeElement $element */
$steps[] = new Behat\Behat\Context\Step\When(sprintf('I print out page "%s"', $element->getAttribute('href')));
$steps[] = new Behat\Behat\Context\Step\When(sprintf('I go to "%s"', $element->getAttribute('href')));
$steps[] = new Behat\Behat\Context\Step\Then('the response status code should be 200');
}
return $steps;
}
/**
* @When /^I print out page "([^"]*)"$/
*/
public function iPrintOutThePage($page) {
$string = sprintf('Visiting page ' . $page);
echo "\033[36m -> " . strtr($string, array("\n" => "\n| ")) . "\033[0m\n";
}
그런 다음 내 시나리오 같습니다
Scenario: my website has no "dead" pages
Given I am on "/examples/site-map/"
Then I should access all pages of site map "c118"
전체 요점은 여기에 진정한 반환 https://gist.github.com/fudriot/6028678
오히려입니다/단순히 예외를 던져 좋을 것 false입니다. Behat은이를 단계적 실패로 간주 할 것입니다. –