Skip to content
Branch: master
Go to file
Code

Latest commit

Files

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

README.md

Verify

BDD Assertions for PHPUnit or Codeception

This is very tiny wrapper for PHPUnit assertions, that are aimed to make tests a bit more readable. With BDD assertions influenced by Chai, Jasmine, and RSpec your assertions would be a bit closer to natural language.

Build Status Latest Stable Version Total Downloads

$user = User::find(1);

// equal
verify($user->getName())->equals('davert');
verify("user have 5 posts", $user->getNumPosts())->equals(5);
verify($user->getNumPosts())->notEquals(3);

// contains
verify('first user is admin', $user->getRoles())->contains('admin');
verify("first user is not banned", $user->getRoles())->notContains('banned');

// greater / less
$rate = $user->getRate();
verify('first user rate is 7', $rate)->equals(7);

verify($rate)->greaterThan(5);
verify($rate)->lessThan(10);
verify($rate)->lessOrEquals(7);
verify($rate)->lessOrEquals(8);
verify($rate)->greaterOrEquals(7);
verify($rate)->greaterOrEquals(5);

// true / false / null
verify($user->isAdmin())->true();
verify($user->isBanned())->false();
verify($user->invitedBy)->null();
verify($user->getPosts())->notNull();

// empty
verify($user->getComments())->isEmpty();
verify($user->getRoles())->notEmpty();

// throws
verify($callback)->throws();
verify($callback)->throws(Exception::class);
verify($callback)->throws(Exception::class, 'exception message');
verify($callback)->throws(new Exception());
verify($callback)->throws(new Exception('message'));

// does not throw
verify($callback)->doesNotThrow();
verify($callback)->doesNotThrow(Exception::class);
verify($callback)->doesNotThrow(Exception::class, 'exception message');
verify($callback)->doesNotThrow(new Exception());
verify($callback)->doesNotThrow(new Exception('exception message'));

//Other methods:
* stringContainsString
* stringNotContainsString
* stringContainsStringIgnoringCase
* stringNotContainsStringIgnoringCase
* array
* bool
* float
* int
* numeric
* object
* resource
* string
* scalar
* callable
* notArray
* notBool
* notFloat
* notInt
* notNumeric
* notObject
* notResource
* notString
* notScalar
* notCallable
* equalsCanonicalizing
* notEqualsCanonicalizing
* equalsIgnoringCase
* notEqualsIgnoringCase
* equalsWithDelta
* notEqualsWithDelta

Shorthands for testing truth/fallacy:

verify_that($user->isActivated());
verify_not($user->isBanned());

These two functions don't check for strict true/false matching, rather empty function is used. verify_that checks that result is not empty value, verify_not does the opposite.

Alternative Syntax

If you follow TDD/BDD you'd rather use expect instead of verify. Which are just an alias functions:

expect("user have 5 posts", $user->getNumPosts())->equals(5);
expect_that($user->isActive());
expect_not($user->isBanned());

Installation

Installing via Composer

Install composer in a common location or in your project:

curl -s http://getcomposer.org/installer | php

Create the composer.json file as follows:

"require-dev": {
    "codeception/verify": "^1.0"
}

Run the composer installer:

php composer.phar install

Usage

Use in any test verify function instead of $this->assert* methods.

Extending

In order to add more assertions you can override Codeception\Verify class:

class MyVerify extends \Codeception\Verify {

    public function success()
    {
    }

}

Set the class name to Codeception\Verify::$override property to verify function use it:

\Codeception\Verify::$override = MyVerify::class;

// access overridden class
verify('it works')->success();

License

Verify is open-sourced software licensed under the MIT License. © Codeception PHP Testing Framework

You can’t perform that action at this time.