codeception/verify

BDD assertion library for PHPUnit

Package info

github.com/Codeception/Verify

pkg:composer/codeception/verify

Statistics

Installs: 14 698 406

Dependents: 867

Suggesters: 18

Stars: 147

Open Issues: 2

3.4.0 2026-02-22 22:13 UTC

Requires

  • php: ^7.4 || ^8.0
  • ext-dom: *
  • phpunit/phpunit: ^9.6.11 || ^10.0 || ^11.0 || ^12.0 || ^13.0

Requires (Dev)

None

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 3d5df69a6d56685ca88fbbf7a1218f03b08324e5


README

BDD Assertions for PHPUnit or Codeception

👁 Latest Stable Version
👁 Total Downloads
👁 Build Status
👁 License
👁 StandWithUkraine

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.

⚠️ This is the Verify 2.0 documentation, to see v1.x docs click here.

Installation

Requires PHP 7.4 or higher

composer require codeception/verify --dev

⬆️ Upgrade from 1.x by following the upgrade guide.

Usage

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

use Codeception\Verify\Verify;

$user = User::find(1);

// equals
verify($user->getName())->equals('davert');

verify($user->getNumPosts())
 ->equals(5, 'user have 5 posts')
 ->notEquals(3);

// contains
Verify::Array($user->getRoles())
 ->contains('admin', 'first user is admin')
 ->notContains('banned', 'first user is not banned');


// greater / less
verify($user->getRate())
 ->greaterThan(5)
 ->lessThan(10)
 ->equals(7, 'first user rate is 7');

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

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

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

// does not throw
Verify::Callable($callback)
 ->doesNotThrow()
 ->throws(Exception::class)
 ->doesNotThrow(new Exception());

// and many more !

📄 See Verifiers full list here.

Alternative Syntax

If you follow TDD/BDD you'd rather use expect instead of verify:

expect($user->getNumPosts())
 ->notToBeNull()
 ->toBeInt()
 ->toEqual(5, 'user have 5 posts');

📄 See Expectations full list here.

Or verify_that which is just an alias function:

verify_that($user->getRate())->equals(7, 'first user rate is 7');

Extending

In order to add more assertions you can extend the abstract class Verify:

use Codeception\Verify\Verify;
use PHPUnit\Framework\Assert;

class MyVerify extends Verify {

 //you can type $actual to only receive a specific data type

 public function __construct($actual = null)
 {
 parent::__construct($actual);
 }

 public function success(string $message = '')
 {
 Assert::assertTrue(true, $message);
 }

}

And use it!

$myVerify = new MyVerify;

$myVerify->success('it works!');

$myVerify::Mixed('this also')->notEquals('works');

License

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