2014-09-18 7 views
0

저는 Behat 영어와 비슷한 테스트 언어 (Gherkin?)를 사용하여 테스트 스크립트를 작성했지만 신속하게 상당한 한계가 있습니다.phpunit 테스트 케이스에서 Behat을 사용하고 있습니까?

내가 설정 한 phpunit 테스트 스크립트 내에서 이러한 테스트를 PHP로 실행할 수 있다면 추가 할 수있는 테스트를 크게 확장 할 수 있습니다. (나는 FuelPHP를 사용하고있다).

필자는 몇 시간 동안 PHPUNIT 테스트 스크립트 내에서 Behat을 실행하려고 시도했지만 많은 행운이 없었습니다.

이것이 가능합니까?

+0

무슨 제한 사항이 있습니까? Behat은 통합 테스트 용이며, phpunit은 단위 테스트 용입니다. 두 가지 개념입니다. – Maerlyn

+0

예 : 페이지 A에서 데이터의 일부가 동일하고 페이지 B에 있음을 비교하는 것입니다. 두 개의 서로 다른 페이지의 데이터 비교. (필자는 기본적으로 속임수를 사용하여 .feature 파일에 기록 할 수 있음을 알고 있지만, PHP로 실행하여 필요한만큼의 어설 션을 작성하는 것이 더 자연 스럽다고 생각했습니다.) – paullb

답변

2

당신이 말하는 것은 의미가 없기 때문에 당신이 혼란 스럽다고 생각합니다. 코드를 사용하여 논리를 표현하는 데 어려움이 있다면 구체적인 질문을해야합니다.

Behat와 Mink는 둘 다 PHP로 작성되었으며, PHP로 컨텍스트를 작성하면 PHP를 사용하기가 더 쉽습니다. 사실, 모든 테스트는 PHP로 실행할 때 실행됩니다 ... 예.

두 페이지에서 데이터를 비교하려면 단순히이 같은 단계를 만들 수 있습니다 명백한 게다가

/** 
* @Then /^the page "(.+)" and the page "(.+)" content should somehow compare$/ 
*/ 
public function assertPageContentCompares($page1, $page2) 
{ 
    $session = $this->getSession(); 
    $session->visit($page1); 
    $page1contents = $session->getPage()->getHtml(); 

    $session->visit($page2); 
    $page2contents = $session->getPage()->getHtml(); 

    // Compare stuff… 
} 

, 당신이, 예를 주장 할 Behat/밍크와의 phpunit을 사용할 수를 귀하의 단계 정의. (모든)에 phpunit을 주장 그들을 사용하여, 정적 메소드 대부분이만큼 간단하다

이 기능 테스트에 비해 단위 테스트에 대한 자세한 경우
PHPUnit_Framework_TestCase::assertSame("", ""); 

당신은 phpunit을 가진 셀레늄 (아마도 다른 프레임 워크도)를 사용할 수 있습니다 , the official documentation tells how.

너는 단지 작은 오이를 싫어하면, 너는 그 핵심에있는 것만 큼 너는 할 수있는 것이별로 없다. PhpStorm 8을 사용하면 코드를 쉽게 지원하고 코드를 쉽게 탐색하고 리팩토링 할 수 있습니다. 그게 문제가되지 않는다면, Behat에 Codeception라고하는 또 다른 훌륭한 대안이 있습니다. 여기서 순수 PHP를 사용하여 테스트를 정의 할 수 있습니다. 어쩌면 그것이 당신이 찾고있는 것 일 것입니다.

+1

고맙습니다. 대답. 나는이 글을 쓰는 것이 하나의 단위 테스트는 아니지만 테스트를하기에 좋은 곳이라는 것을 알고 있습니다. 위와 같이 썼던 것은 거의 정확하게하고 싶었지만 기능으로 쓰는 것은 정말 성 가시고 PHP에서 직접 작성할 수 있기를 바랬습니다 (progammers가 더 빠르고 쉽게 될 것으로 의심됩니다). 작업). 당신 말이 맞을지 모르겠지만, 나는 용어가 틀림 없다 : Gherkin, Mink, Behat ... – paullb

+0

Behat 및 나머지 가족들과 머리를 맞출 시간이 필요합니다. 그리고 나는 Gherkin이 매우 보수적 인 코딩 방법이 아니라는 것에 동의합니다. 나는 그것도 좋아하지 않습니다. 나는 파싱을 모두 할 필요가 없기 때문에 실제 실행이 Codeception에서 더 빠를 지 궁금합니다. 할 수있는 경우 두 가지 방법을 시도해보십시오. 여러 가지 장단점이 있습니다. –