Laravel5.Behat으로 해보자.
왜 Behat을 사용하는지
후쿠오카 PHP 회의에서 phpspeec와 behat의 말을 들었어요.
behat이 더 효율적이라고 생각해서 bethat부터 해 보기로 했어요.
↓ 슬라이드
phpspec으로 시작하는 BDD
http://www.slideshare.net/yuukitakezawa/phpspec-bdd
behat 연장 방법
http://www.slideshare.net/RyoTomidokoro/behat-49897353
그나저나 저는 지금까지 테스트 코드를 거의 쓴 적이 없어요...
항상 "테스트 코드가 있어야 하는구나"라고 생각하고 예전의 시뮬레이션 방법으로 했다.너는 정말 장작이다.
컨디션
라벨 5시대의 홈스테드를 기반으로 내 Vagrant 환경을 구축했다.
가상 Ubuntu에서 작업합니다.
쓸것
그런 게 있으니까 이걸로
https://github.com/laracasts/Behat-Laravel-Extension
단계 설정
위의 READMEmd와 애니메이션의 순서에 따라 진행합니다.
비디오
https://laracasts.com/lessons/laravel-5-and-behat-bffs
composter로 한 벌 담아요.
laavel 디렉터리로 이동하고 다음 동작을 수행합니다sudo composer require behat/behat behat/mink behat/mink-extension laracasts/behat-laravel-extension --dev
behat.만들다
내용도 README를 기반으로 한 env입니다.path 지정.env
vim behat.yml
behat.ymldefault:
extensions:
Laracasts\Behat:
env_path: .env
Behat\MinkExtension:
default_session: laravel
laravel: ~
Behat를 위해 Laavel의.env
를 준비하고 싶다면env_path
파일을 평론하거나 지정할 수 있습니다.이해했어.
behat --init
vender에 behat이 있기 때문에 명령을 실행합니다$ vendor/behat/behat/bin/behat --init
+d features - place your *.feature files here
+d features/bootstrap - place your context classes here
+f features/bootstrap/FeatureContext.php - place your definitions, transformations and hooks here
라벨 5시대의 홈스테드를 기반으로 내 Vagrant 환경을 구축했다.
가상 Ubuntu에서 작업합니다.
쓸것
그런 게 있으니까 이걸로
https://github.com/laracasts/Behat-Laravel-Extension
단계 설정
위의 READMEmd와 애니메이션의 순서에 따라 진행합니다.
비디오
https://laracasts.com/lessons/laravel-5-and-behat-bffs
composter로 한 벌 담아요.
laavel 디렉터리로 이동하고 다음 동작을 수행합니다sudo composer require behat/behat behat/mink behat/mink-extension laracasts/behat-laravel-extension --dev
behat.만들다
내용도 README를 기반으로 한 env입니다.path 지정.env
vim behat.yml
behat.ymldefault:
extensions:
Laracasts\Behat:
env_path: .env
Behat\MinkExtension:
default_session: laravel
laravel: ~
Behat를 위해 Laavel의.env
를 준비하고 싶다면env_path
파일을 평론하거나 지정할 수 있습니다.이해했어.
behat --init
vender에 behat이 있기 때문에 명령을 실행합니다$ vendor/behat/behat/bin/behat --init
+d features - place your *.feature files here
+d features/bootstrap - place your context classes here
+f features/bootstrap/FeatureContext.php - place your definitions, transformations and hooks here
위의 READMEmd와 애니메이션의 순서에 따라 진행합니다.
비디오
https://laracasts.com/lessons/laravel-5-and-behat-bffs
composter로 한 벌 담아요.
laavel 디렉터리로 이동하고 다음 동작을 수행합니다
sudo composer require behat/behat behat/mink behat/mink-extension laracasts/behat-laravel-extension --dev
behat.만들다
내용도 README를 기반으로 한 env입니다.path 지정
.env
vim behat.yml
behat.ymldefault:
extensions:
Laracasts\Behat:
env_path: .env
Behat\MinkExtension:
default_session: laravel
laravel: ~
Behat를 위해 Laavel의.env
를 준비하고 싶다면env_path
파일을 평론하거나 지정할 수 있습니다.이해했어.behat --init
vender에 behat이 있기 때문에 명령을 실행합니다
$ vendor/behat/behat/bin/behat --init
+d features - place your *.feature files here
+d features/bootstrap - place your context classes here
+f features/bootstrap/FeatureContext.php - place your definitions, transformations and hooks here
feature 쓰기
Laravel5.1을 넣은 상태라서 시험 내용은
"첫 페이지에 액세스하면 Laavel 5로 표시"
써 보아라.
features/home.feature
Feature: show laravel home
Scenario: Home
Given I am on the homepage
Then I should see "Laravel 5"
FeatureContext.php
behat의 초기 형태를 유지하여 움직이지 않다
"Behat\Mink Extension\Context\Mink Context를 계승하십시오."그래서 읽고 extends를 씁니다.
features/bootstrap/FeatureContext.php
<?php
use Behat\Behat\Context\Context;
use Behat\Behat\Context\SnippetAcceptingContext;
use Behat\MinkExtension\Context\MinkContext;
/**
* Defines application features from the specific context.
*/
class FeatureContext extends MinkContext implements Context, SnippetAcceptingContext
{
/**
* Initializes context.
*
* Every scenario gets its own context instance.
* You can also pass arbitrary arguments to the
* context constructor through behat.yml.
*/
public function __construct()
{
}
}
DB에 대한 변경 사항을 반영하지 않기 위해 Transaction의 스크롤을 사용하거나메일을 보내는 테스트에서도 보내고 싶지 않을 때 쓰는 트레이트를 준비했다.
사용할 때는 FeatureContext에서 사용하고 싶은trait로 읽으면 됩니다.
시험해 보다 $ vendor/behat/behat/bin/behat
Feature: show laravel home
Scenario: Home # features/home.feature:3
Given I am on the homepage # FeatureContext::iAmOnHomepage()
Then I should see "Laravel 5" # FeatureContext::assertPageContainsText()
1 scenario (1 passed)
2 steps (2 passed)
0m1.16s (23.85Mb)
시험이 순조롭게 끝났다.
쓸 수 있는 시험 일람표
아직 쓸 수 있는 시험을 제대로 파악하지 못했다.
수행vendor/behat/behat/bin/behat -dl
하면 차트 표시
이것을 참고로 모색하다.
변형은 다음과 같은 테스트를 쓸 수 있다.$ vendor/behat/behat/bin/behat -dl
default | Given /^(?:|I )am on (?:|the )homepage$/
default | When /^(?:|I )go to (?:|the )homepage$/
default | Given /^(?:|I )am on "(?P<page>[^"]+)"$/
default | When /^(?:|I )go to "(?P<page>[^"]+)"$/
default | When /^(?:|I )reload the page$/
default | When /^(?:|I )move backward one page$/
default | When /^(?:|I )move forward one page$/
default | When /^(?:|I )press "(?P<button>(?:[^"]|\\")*)"$/
default | When /^(?:|I )follow "(?P<link>(?:[^"]|\\")*)"$/
default | When /^(?:|I )fill in "(?P<field>(?:[^"]|\\")*)" with "(?P<value>(?:[^"]|\\")*)"$/
default | When /^(?:|I )fill in "(?P<field>(?:[^"]|\\")*)" with:$/
default | When /^(?:|I )fill in "(?P<value>(?:[^"]|\\")*)" for "(?P<field>(?:[^"]|\\")*)"$/
default | When /^(?:|I )fill in the following:$/
default | When /^(?:|I )select "(?P<option>(?:[^"]|\\")*)" from "(?P<select>(?:[^"]|\\")*)"$/
default | When /^(?:|I )additionally select "(?P<option>(?:[^"]|\\")*)" from "(?P<select>(?:[^"]|\\")*)"$/
default | When /^(?:|I )check "(?P<option>(?:[^"]|\\")*)"$/
default | When /^(?:|I )uncheck "(?P<option>(?:[^"]|\\")*)"$/
default | When /^(?:|I )attach the file "(?P<path>[^"]*)" to "(?P<field>(?:[^"]|\\")*)"$/
default | Then /^(?:|I )should be on "(?P<page>[^"]+)"$/
default | Then /^(?:|I )should be on (?:|the )homepage$/
default | Then /^the (?i)url(?-i) should match (?P<pattern>"(?:[^"]|\\")*")$/
default | Then /^the response status code should be (?P<code>\d+)$/
default | Then /^the response status code should not be (?P<code>\d+)$/
default | Then /^(?:|I )should see "(?P<text>(?:[^"]|\\")*)"$/
default | Then /^(?:|I )should not see "(?P<text>(?:[^"]|\\")*)"$/
default | Then /^(?:|I )should see text matching (?P<pattern>"(?:[^"]|\\")*")$/
default | Then /^(?:|I )should not see text matching (?P<pattern>"(?:[^"]|\\")*")$/
default | Then /^the response should contain "(?P<text>(?:[^"]|\\")*)"$/
default | Then /^the response should not contain "(?P<text>(?:[^"]|\\")*)"$/
default | Then /^(?:|I )should see "(?P<text>(?:[^"]|\\")*)" in the "(?P<element>[^"]*)" element$/
default | Then /^(?:|I )should not see "(?P<text>(?:[^"]|\\")*)" in the "(?P<element>[^"]*)" element$/
default | Then /^the "(?P<element>[^"]*)" element should contain "(?P<value>(?:[^"]|\\")*)"$/
default | Then /^the "(?P<element>[^"]*)" element should not contain "(?P<value>(?:[^"]|\\")*)"$/
default | Then /^(?:|I )should see an? "(?P<element>[^"]*)" element$/
default | Then /^(?:|I )should not see an? "(?P<element>[^"]*)" element$/
default | Then /^the "(?P<field>(?:[^"]|\\")*)" field should contain "(?P<value>(?:[^"]|\\")*)"$/
default | Then /^the "(?P<field>(?:[^"]|\\")*)" field should not contain "(?P<value>(?:[^"]|\\")*)"$/
default | Then /^the "(?P<checkbox>(?:[^"]|\\")*)" checkbox should be checked$/
default | Then /^the checkbox "(?P<checkbox>(?:[^"]|\\")*)" (?:is|should be) checked$/
default | Then /^the "(?P<checkbox>(?:[^"]|\\")*)" checkbox should not be checked$/
default | Then /^the checkbox "(?P<checkbox>(?:[^"]|\\")*)" should (?:be unchecked|not be checked)$/
default | Then /^the checkbox "(?P<checkbox>(?:[^"]|\\")*)" is (?:unchecked|not checked)$/
default | Then /^(?:|I )should see (?P<num>\d+) "(?P<element>[^"]*)" elements?$/
default | Then /^print current URL$/
default | Then /^print last response$/
default | Then /^show last response$/
시험에 실패한 원인을 모르면 다음 세 가지 방법으로 상황을 관찰할 수 있다.
default | Then/^print current URL$/
default | Then/^print last response$/
default | Then/^show last response$/
다음
2015.7.29 추가 테스트
Behat-Laavel-Extension을 사용하여 Laavel5의 로그인 인증 테스트
지금까지 이 테스트가 만들어졌습니다.
기릿허브에서 푸시를 하면 이동할 수 있는 제인킨스 씨는 테스트가 뛸 수 있도록 설정해 보세요.
벚꽃의 VPS에 제인킨스를 설치하고 테스트 OK에서 자동 디버깅 환경 구축(1)
벚꽃의 VPS에 제인킨스를 설치하고 테스트 OK 자동 디버깅 환경 구축(2)
벚꽃의 VPS에 제인킨스를 설치하고 테스트 OK에서 자동 디버깅 환경 구축(3)
벚꽃의 VPS에 제인킨스를 설치하고 테스트 OK에서 자동 디버깅 환경을 구축(4)
Reference
이 문제에 관하여(Laravel5.Behat으로 해보자.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/inaka_phper/items/a57776253fc5008f7616
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ vendor/behat/behat/bin/behat
Feature: show laravel home
Scenario: Home # features/home.feature:3
Given I am on the homepage # FeatureContext::iAmOnHomepage()
Then I should see "Laravel 5" # FeatureContext::assertPageContainsText()
1 scenario (1 passed)
2 steps (2 passed)
0m1.16s (23.85Mb)
아직 쓸 수 있는 시험을 제대로 파악하지 못했다.
수행
vendor/behat/behat/bin/behat -dl
하면 차트 표시이것을 참고로 모색하다.
변형은 다음과 같은 테스트를 쓸 수 있다.
$ vendor/behat/behat/bin/behat -dl
default | Given /^(?:|I )am on (?:|the )homepage$/
default | When /^(?:|I )go to (?:|the )homepage$/
default | Given /^(?:|I )am on "(?P<page>[^"]+)"$/
default | When /^(?:|I )go to "(?P<page>[^"]+)"$/
default | When /^(?:|I )reload the page$/
default | When /^(?:|I )move backward one page$/
default | When /^(?:|I )move forward one page$/
default | When /^(?:|I )press "(?P<button>(?:[^"]|\\")*)"$/
default | When /^(?:|I )follow "(?P<link>(?:[^"]|\\")*)"$/
default | When /^(?:|I )fill in "(?P<field>(?:[^"]|\\")*)" with "(?P<value>(?:[^"]|\\")*)"$/
default | When /^(?:|I )fill in "(?P<field>(?:[^"]|\\")*)" with:$/
default | When /^(?:|I )fill in "(?P<value>(?:[^"]|\\")*)" for "(?P<field>(?:[^"]|\\")*)"$/
default | When /^(?:|I )fill in the following:$/
default | When /^(?:|I )select "(?P<option>(?:[^"]|\\")*)" from "(?P<select>(?:[^"]|\\")*)"$/
default | When /^(?:|I )additionally select "(?P<option>(?:[^"]|\\")*)" from "(?P<select>(?:[^"]|\\")*)"$/
default | When /^(?:|I )check "(?P<option>(?:[^"]|\\")*)"$/
default | When /^(?:|I )uncheck "(?P<option>(?:[^"]|\\")*)"$/
default | When /^(?:|I )attach the file "(?P<path>[^"]*)" to "(?P<field>(?:[^"]|\\")*)"$/
default | Then /^(?:|I )should be on "(?P<page>[^"]+)"$/
default | Then /^(?:|I )should be on (?:|the )homepage$/
default | Then /^the (?i)url(?-i) should match (?P<pattern>"(?:[^"]|\\")*")$/
default | Then /^the response status code should be (?P<code>\d+)$/
default | Then /^the response status code should not be (?P<code>\d+)$/
default | Then /^(?:|I )should see "(?P<text>(?:[^"]|\\")*)"$/
default | Then /^(?:|I )should not see "(?P<text>(?:[^"]|\\")*)"$/
default | Then /^(?:|I )should see text matching (?P<pattern>"(?:[^"]|\\")*")$/
default | Then /^(?:|I )should not see text matching (?P<pattern>"(?:[^"]|\\")*")$/
default | Then /^the response should contain "(?P<text>(?:[^"]|\\")*)"$/
default | Then /^the response should not contain "(?P<text>(?:[^"]|\\")*)"$/
default | Then /^(?:|I )should see "(?P<text>(?:[^"]|\\")*)" in the "(?P<element>[^"]*)" element$/
default | Then /^(?:|I )should not see "(?P<text>(?:[^"]|\\")*)" in the "(?P<element>[^"]*)" element$/
default | Then /^the "(?P<element>[^"]*)" element should contain "(?P<value>(?:[^"]|\\")*)"$/
default | Then /^the "(?P<element>[^"]*)" element should not contain "(?P<value>(?:[^"]|\\")*)"$/
default | Then /^(?:|I )should see an? "(?P<element>[^"]*)" element$/
default | Then /^(?:|I )should not see an? "(?P<element>[^"]*)" element$/
default | Then /^the "(?P<field>(?:[^"]|\\")*)" field should contain "(?P<value>(?:[^"]|\\")*)"$/
default | Then /^the "(?P<field>(?:[^"]|\\")*)" field should not contain "(?P<value>(?:[^"]|\\")*)"$/
default | Then /^the "(?P<checkbox>(?:[^"]|\\")*)" checkbox should be checked$/
default | Then /^the checkbox "(?P<checkbox>(?:[^"]|\\")*)" (?:is|should be) checked$/
default | Then /^the "(?P<checkbox>(?:[^"]|\\")*)" checkbox should not be checked$/
default | Then /^the checkbox "(?P<checkbox>(?:[^"]|\\")*)" should (?:be unchecked|not be checked)$/
default | Then /^the checkbox "(?P<checkbox>(?:[^"]|\\")*)" is (?:unchecked|not checked)$/
default | Then /^(?:|I )should see (?P<num>\d+) "(?P<element>[^"]*)" elements?$/
default | Then /^print current URL$/
default | Then /^print last response$/
default | Then /^show last response$/
시험에 실패한 원인을 모르면 다음 세 가지 방법으로 상황을 관찰할 수 있다.default | Then/^print current URL$/
default | Then/^print last response$/
default | Then/^show last response$/
다음
2015.7.29 추가 테스트
Behat-Laavel-Extension을 사용하여 Laavel5의 로그인 인증 테스트
지금까지 이 테스트가 만들어졌습니다.
기릿허브에서 푸시를 하면 이동할 수 있는 제인킨스 씨는 테스트가 뛸 수 있도록 설정해 보세요.
벚꽃의 VPS에 제인킨스를 설치하고 테스트 OK에서 자동 디버깅 환경 구축(1)
벚꽃의 VPS에 제인킨스를 설치하고 테스트 OK 자동 디버깅 환경 구축(2)
벚꽃의 VPS에 제인킨스를 설치하고 테스트 OK에서 자동 디버깅 환경 구축(3)
벚꽃의 VPS에 제인킨스를 설치하고 테스트 OK에서 자동 디버깅 환경을 구축(4)
Reference
이 문제에 관하여(Laravel5.Behat으로 해보자.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/inaka_phper/items/a57776253fc5008f7616
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Laravel5.Behat으로 해보자.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/inaka_phper/items/a57776253fc5008f7616텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)