codeception/verify

BDD assertion library for PHPUnit

Installs: 5 221 984

Dependents: 774

Suggesters: 17

Security: 0

Stars: 89

Watchers: 8

Forks: 22

Open Issues: 0

1.3.0 2020-02-15 23:17 UTC

This package is auto-updated.

Last update: 2020-06-15 23:58:52 UTC


README

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