Skip to content

tyler43636/Behat-Mail-Extension

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 

Behat Mail Extension

Build Status

Requirements

  • PHP 5.5 or newer

Supported Drivers

Installation

Require tpayne/behat-mail-extension using composer

composer require tpayne/behat-mail-extension --dev

or add it manually to the require-dev section of your composer.json file.

"require-dev": {
  	"tpayne/behat-mail-extension": "~1.0"
},

Configure your context

Setup your feature context to use the Behat Mail Extension

  1. Implement the MailAwareContext in your feature context.

  2. Use the Mail trait in your context.

use tPayne\BehatMailExtension\Context\MailAwareContext;
use tPayne\BehatMailExtension\Context\MailTrait;

class FeatureContext implements MailAwareContext {
    use MailTrait;

Using the mail trait will add a mail property to your feature context.

behat.yml

Chose one of the following configurations for your behat.yml file.

Defaults

If no drivers are specified the following defaults will be used:

  • driver: mailcatcher
  • base_uri: localhost
  • http_port: 1080
default:
    extensions:
        tPayne\BehatMailExtension\ServiceContainer\MailExtension

MailCatcher

Add the MailExtension to your behat.yml file:

default:
    extensions:
        tPayne\BehatMailExtension\ServiceContainer\MailExtension:
            driver: mailcatcher
            base_uri: localhost # optional
            http_port: 1080 # optional

Mailtrap.io

Add the MailExtension to your behat.yaml file:

default:
    extensions:
        tPayne\BehatMailExtension\ServiceContainer\MailExtension:
            driver: mailtrap
            api_key: MAIL_TRAP_KEY
            mailbox_id: MAILBOX_ID

Usage

The Behat Mail Extension will automatically clear messages from the inbox when runing scenarios tagged with @mail

Feature: App Registration
  In order to join the site
  As a guest
  I want to register for an account

  @mail
  Scenario: Register an account
    Given I am a guest
    When I register for an account
    Then I should receive a welcome email
    

Access the mail property from your feature context to test any emails sent.

    /**
     * @Then I should receive a welcome email
     */
    public function iShouldReceiveAWelcomeEmail()
    {
        $message = $this->mail->getLatestMessage();

        PHPUnit_Framework_Assert::assertEquals('Welcome!', $message->subject());
        PHPUnit_Framework_Assert::assertContains('Please confirm your account', $message->plainText());
    }

The Mail Driver API

The mail driver, accessible via the mail property on the feature context, offers the following methods:

  • getMessages()
  • getLatestMessage()
  • deleteMessages() (This is called automatically after scenarios tagged @mail)

The Message API

The mail driver will return a message object with the following API:

  • to()
  • from()
  • subject()
  • plainText()
  • html()
  • date()

About

A Behat extension for testing emails with mailcatcher and mailtrap.io

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages