codeception/verify

PHPUnit 的 BDD 断言库

3.2.0 2024-03-28 09:57 UTC

README

PHPUnit 或 Codeception 的 BDD 断言

Latest Stable Version Total Downloads Build Status License StandWithUkraine

这是一个非常小巧的 PHPUnit 断言包装器,旨在使测试更加易于阅读。受 BDD 断言(受 BDD 影响,由 ChaiJasmineRSpec 支持)的影响,您的断言将更加接近自然语言。

⚠️ 这是 Verify 2.0 文档,要查看 v1.x 文档,请点击 这里。

安装

需要 PHP 7.4 或更高版本

composer require codeception/verify --dev

⬆️ 按照升级指南升级 1.x 版本。

用法

在任何测试中使用 verify 函数代替 $this->assert* 方法

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 !

📄 查看验证器完整列表 这里。

替代语法

如果您遵循 TDD/BDD,则更愿意使用 expect 而不是 verify

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

📄 查看期望完整列表 这里。

或者 verify_that,这是一个别名函数

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

扩展

为了添加更多断言,您可以通过扩展抽象类 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);
    }

}

并使用它!

$myVerify = new MyVerify;

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

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

许可证

Verify 是开源软件,许可协议为 MIT 许可。© Codeception PHP 测试框架