mink / driver-testsuite
Mink 驱动器的功能测试套件
Requires
- php: >=7.2
- ext-json: *
- behat/mink: ^1.11
- phpunit/phpunit: ^8.5.22 || ^9.5.11
- symfony/error-handler: ^4.4 || ^5.0 || ^6.0 || ^7.0
- symfony/phpunit-bridge: ^4.4 || ^5.4 || ^6.0 || ^7.0
- yoast/phpunit-polyfills: ^1.0
Requires (Dev)
- phpstan/phpstan: ^1.10
- phpstan/phpstan-phpunit: ^1.3
- phpstan/phpstan-symfony: ^1.3
- symfony/http-kernel: ^4.4 || ^5.0 || ^6.0 || ^7.0
Conflicts
- symfony/http-foundation: <4.4 || >=8
- symfony/http-kernel: <4.4 || >=8
This package is auto-updated.
Last update: 2024-08-26 14:34:17 UTC
README
这是 Mink 驱动器的通用测试套件,以确保实现之间的一致性。
用法
驱动器的测试套件应该按照以下方式构建
{ "require": { "behat/mink": "^1.9" }, "require-dev": { "mink/driver-testsuite": "dev-master", "phpunit/phpunit": "^8.5.22 || ^9.5.11" }, "autoload-dev": { "psr-4": { "Acme\\MyDriver\\Tests\\": "tests" } } }
PHPUnit 配置应该如下所示
<?xml version="1.0" encoding="UTF-8"?> <phpunit colors="true" bootstrap="vendor/autoload.php"> <php> <var name="driver_config_factory" value="Acme\MyDriver\Tests\Config::getInstance" /> </php> <testsuites> <testsuite name="Functional tests"> <directory>vendor/mink/driver-testsuite/tests</directory> </testsuite> <!-- if needed to add more tests --> <testsuite name="Driver tests"> <directory>./tests/</directory> </testsuite> </testsuites> <filter> <whitelist> <directory>./src</directory> </whitelist> </filter> <listeners> <listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener"/> </listeners> </phpunit>
然后为测试套件创建驱动器配置
// tests/Config.php namespace Acme\MyDriver\Tests; use Behat\Mink\Tests\Driver\AbstractConfig; class Config extends AbstractConfig { /** * Creates an instance of the config. * * This is the callable registered as a php variable in the phpunit.xml config file. * It could be outside the class but this is convenient. */ public static function getInstance() { return new self(); } /** * Creates driver instance. * * @return \Behat\Mink\Driver\DriverInterface */ public function createDriver() { return new \Acme\MyDriver\MyDriver(); } }
在 AbstractConfig 中还有其他一些方法可用,可以重写以适应驱动器的测试套件需求(例如跳过某些测试)。
运行测试
在运行测试之前,您需要启动一个暴露 Web 固件(除非驱动器不执行真实的 HTTP 请求)的 web 服务器。这可以通过以下命令完成
$ vendor/bin/mink-test-server
在测试结束时停止服务器,取消命令。
注意:此命令需要 Bash。如果您使用的是 Windows,请使用 GitBash 或 Cygwin(或任何等效工具)来运行它。
此命令还需要 PHP 5.4+ 以使用内置的 web 服务器。如果 PATH 中可用的 PHP 版本不同,请使用
MINK_PHP_BIN
环境变量选择不同的 PHP 运行时。
现在您可以使用 vendor/bin/phpunit
运行您的驱动器测试。此包将 PHPUnit 作为依赖项安装,以确保使用与测试套件兼容的 PHPUnit 版本。
添加特定于驱动器的测试
当添加特定于驱动器的额外测试用例时,要么使用您自己的命名空间,要么将它们放在 Behat\Mink\Tests\Driver\Custom
子命名空间中,以确保您不会与未来在驱动器测试套件中添加的测试用例发生冲突。当驱动器有自己的测试时,建议在 phpunit/phpunit
上添加 dev 依赖项,以确保即使 driver-testsuite 添加了对新版本的支持,测试也兼容 PHPUnit。