BDD en PHP, búsqueda de pruebas en Wikipedia con Behat y Mink (controlador Selenium2) -- php campo con bdd camp codereview Relacionados El problema

BDD in PHP, Testing search in Wikipedia with Behat and Mink (Selenium2 Driver)


3
vote

problema

Español

Estoy tratando de aprender BDD en PHP con behat y visy y estoy usando SELENIUM2 CONDUCTOR para el mismo.

El escenario se da en esta página y es como Sigue:

  Worker6  

El archivo behat.yml es el siguiente:

  99887766555443317  

He escrito el siguiente código para FeatureContext.php que estoy seguro de que necesita mejoras. ¿Alguien puede sugerirme los puntos por el mismo?

  Worker8  
Original en ingles

I am trying to learn BDD in PHP with Behat and Mink and I am using Selenium2 driver for the same.

The scenario is given on this page and is as follows:

Feature: Search     In order to see a word definition     As a website user     I need to be able to search for a word      Scenario: Searching for a page that does exist         Given I am on "/wiki/Main_Page"         When I fill in "search" with "Behavior Driven Development"         And I press "searchButton"         Then I should see "Behavior-driven development"      Scenario: Searching for a page that does NOT exist         Given I am on "/wiki/Main_Page"         When I fill in "search" with "Glory Driven Development"         And I press "searchButton"         Then I should see "Search results" 

The file behat.yml is as follows:

default:     extensions:         Behat\MinkExtension:             base_url: http://en.wikipedia.org/             goutte: ~             selenium2: ~ 

I have written the below code for FeatureContext.php that I am sure needs improvements. Can anyone suggest me the points for the same?

<?php  use Behat\Behat\Tester\Exception\PendingException; use Behat\Behat\Context\Context; use Behat\Behat\Context\SnippetAcceptingContext; use Behat\Gherkin\Node\PyStringNode; use Behat\Gherkin\Node\TableNode;  /** * Defines application features from the specific context. */ class FeatureContext 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()     {          $this->driver = new \Behat\Mink\Driver\Selenium2Driver('firefox');         $this->session = new \Behat\Mink\Session($this->driver);                 $this->session->start();     }       /**     * @Given I am on :url     */     public function iAmOn($url)     {         $this->session->visit('http://en.wikipedia.org'.$url);     }      /**     * @When I fill in :field with :text     */     public function iFillInWith($field, $text)     {         $this             ->session             ->getPage()             ->find('css', '[type=' . $field . ']')             ->setValue($text);     }      /**     * @When I press :button     */     public function iPress($button)     {         $this             ->session             ->getPage()             ->find('css', '[id=' . $button . ']')             ->press();     }      /**     * @Then I should see :text     */     public function iShouldSee($text)     {         $title = $this             ->session             ->getPage()             ->find('css', 'h1')             ->getText();          if ($title !== $text) {             new Exception('Invalid page');         }     }      /**     * @AfterScenario     */     public function tearDown()     {         $this->session->stop();     } } 
     

Lista de respuestas

0
 
vote
vote
La mejor respuesta
 

Hay un punto importante que podemos hacer aquí. En el FeatureContext.php , si Clase FeatureContext extends MinkContext , entonces no necesita escribir ninguna de las definiciones de funciones en absoluto!

Aplicando lo que acabo de decir, dará lugar a tener 9988777665544336 para ser como:

  <?php  use BehatBehatTesterExceptionPendingException; use BehatBehatContextContext; use BehatBehatContextSnippetAcceptingContext; use BehatGherkinNodePyStringNode; use BehatGherkinNodeTableNode; use BehatMinkExtensionContextMinkContext; //This line is add  class FeatureContext extends MinkContext // This line is changed     implements Context, SnippetAcceptingContext {     public function __construct()     {     } }   

Nota: para que el punto sea más claro, he eliminado los comentarios que se generan por Behat.

 

There is one major point that we can do here. In the FeatureContext.php, if class FeatureContext extends MinkContext, then you do not need to write any of the function definitions at all!

Applying what I just said, will result to have FeatureContext.php to be as:

<?php  use Behat\Behat\Tester\Exception\PendingException; use Behat\Behat\Context\Context; use Behat\Behat\Context\SnippetAcceptingContext; use Behat\Gherkin\Node\PyStringNode; use Behat\Gherkin\Node\TableNode; use Behat\MinkExtension\Context\MinkContext; //This line is add  class FeatureContext extends MinkContext // This line is changed     implements Context, SnippetAcceptingContext {     public function __construct()     {     } } 

Note: To make the point more clear, I have removed the comments that are generated by behat.

 
 

Relacionados problema

4  Las primeras pruebas de BDD / RSPEC, querrían alguna crítica con respecto a los modismos, convenciones y estilo  ( First bdd rspec tests would like some review regarding idioms conventions and ) 
Este es mi primer intento de BDD y RSPEC. Soy más de un tipo C # Xunit. Escribí esta clase mientras desarrollamos un generador de mapas de azulejos aleatori...

4  Formateo de CSV como tabla usando BDD  ( Formatting csv as a table using bdd ) 
Este es el problema: Escriba una función para crear una tabla a partir de los datos de CSV. La entrada a la función es una lista de cadenas. Cada cadena ...

4  Contexto del sistema de archivos en memoria para el marco de prueba BDAT PHP BDD  ( In memory file system context for the behat php bdd testing framework ) 
Quería crear un contexto de 'Utilidad' para habilitar las pruebas del sistema de archivos con behat . Específicamente, esto está dirigido a ayudar con las pr...

4  PHP Vehículo / Prueba de eventos  ( Php vehicle event test ) 
Me dieron una prueba para escribir una clase que calcula el promedio y el kilometraje promedio de un vehículo sin usar una base de datos o un marco. Los kil...

1  Mocha + debería.js, pruebas de nodo  ( Mocha should js testing for node ) 
Soy nuevo en el mundo de la BDD, pero me gustaría obtener un agarre lo antes posible. Es una de mis primeras pruebas: fluido.js 'use strict'; var Fluent...

5  Primera vez BDD: probando las mismas cosas en las pruebas de aceptación y unidad  ( First time bdd testing the same things in both acceptance and unit tests ) 
Acabo de probar BDD por primera vez e implementé un simple versiones semánticas parachoques en Python. La clase realiza una cadena de versiones en el form...

1  Dos pruebas de unidad BDD para un repositorio de cuenta con código idéntico  ( Two bdd unit tests for an account repository with identical code ) 
Estoy probando mi clase de repositorio: interface AccountRepository{ void save(Account account); Optional<Account> findById(Long id); } y al es...

8  Utilizando i18n en las especificaciones de características de Capybara  ( Using i18n in capybara feature specs ) 
Aquí estoy tratando de evitar la codificación dura en los mensajes flash usando I18n. Además, he intentado usar un selector de CSS para enviar el formulario p...

2  Prueba para una aplicación de rieles  ( Test for a rails app ) 
Aquí hay una prueba de una aplicación de rieles en la que estoy trabajando. Quiero saber si estoy usando timer_update()2 , timer_update()3 , timer_update()...

3  Pruebas de BDD en phpunit  ( Bdd tests in phpunit ) 
Nadie en mi equipo sabe cómo escribir pruebas de BDD, así que comencé a escribir algo y está funcionando bien. Creo que ha llegado el momento de mejorar la ca...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos