mink/driver-testsuite

Mink 驱动器的功能测试套件

dev-master 2024-06-26 14:05 UTC

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。