Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Behat: Difference between revisions

From MoodleDocs
(Created page with "Behat is a Behaviour Driven Development (BDD) framework This document is a work in progress (HQ week off project) and it should not be taken into account for nothing out of this...")
(No difference)

Revision as of 01:56, 9 August 2012

Behat is a Behaviour Driven Development (BDD) framework

This document is a work in progress (HQ week off project) and it should not be taken into account for nothing out of this scope nor nothing official

Example

The expected behaviours are specified as scenarios

Basic scenario

Feature: Login

 In order to login
 As a moodle user
 I need to be able to authenticate me in Moodle
 Scenario: Login as an existing user
   Given I am on "login/index.php"
   When I fill in "username" with "admin"
   And I fill in "password" with "moodle"
   And I press "loginbtn"
   Then I should see "Moodle 101: Course Name"
 Scenario: Login as an unexisting user
   Given I am on "login/index.php"
   When I fill in "username" with "adminasdasd"
   And I fill in "password" with "moodlesdfasdf"
   And I press "loginbtn"
   Then I should see "Invalid login, please try again"

Complex scenario

The aim of this project is to be able to define scenarios like this. Note the quoted strings are received as variables by the steps definitions which will process them; the steps under Feature: are only descriptive

Feature: Add a discussion to a forum

 In order to add a discussion
 As a moodle user
 I need to be able to view the added data in a forum
 Scenario: A teacher adds a discussion
   Given I am logged as a "teacher"
   And I go to a course
   And I create a "forum" activity
   And I view the "forum" activity
   When I add a "forum_discussion" filling the fields "subject,message[text]" with "I'm the user subject,Dealing with \, split"    # Wrapper step, it will redirect the petition to a "forum_discussion" method
   Then I should see "Discussion"
   And I should see "Subject"
   And I should see "I'm the user subject"

A config file with test data must be set in order to be able to process the "logged as a $roleshortname" or the "a course" statements

Contexts

The steps are executed in steps definitions, which are defined in "contexts"

Organization

The Features context class is split in different context to ease the step definitions location.

  • A main FeaturesContext class which extends MinkContext, the basic web development set of actions
    • Contains all the basic steps definitions like visit($url), pressButton($button) to manage the browser
    • The most common Moodle actions like iAmLoggedAsA($roleshortname) or aUserAssignedInContextOfContextlevel($roleshortname, $instanceid, $contextlevel) to speed up the creation of scenarios
  • An abstract BaseContext class with helper methods to other context
  • A context for each component extending BaseContext