soulcodex/laravel-behat

Laravel 扩展,易于与 Behat 集成

安装次数: 22,293

依赖者: 0

建议者: 0

安全性: 0

星标: 7

关注者: 4

分支: 2

开放问题: 1

类型:behat-extension

1.0.6 2024-03-27 13:10 UTC

This package is auto-updated.

Last update: 2024-08-27 14:01:40 UTC


README

入门指南

1. 安装依赖

一如既往,我们需要通过 Composer 拉取一些依赖。

composer require behat/behat behat/mink friends-of-behat/mink-extension soulcodex/laravel-behat --dev

这将使我们能够访问 Behat、Mink,以及当然,Laravel 扩展。

2. 创建 Behat.yml 配置文件

接下来,在您的项目根目录中创建一个 behat.yml 文件,并添加以下内容

default:
    extensions:
        Soulcodex\Behat:
            kernel: # Default values
                bootstrap_path: '/bootstrap/app.php'
                environment_path: '.env.behat'
        Behat\MinkExtension: # Default mink extension configuration
            default_session: laravel
            laravel: ~

    # Your test suites here
    suites:
        user:
            paths: [ '%paths.base%/path/to/your/features/tests/files' ]
            # The context needed by your features tests
            contexts: ~

在这里,我们引用 Laravel 扩展,并告诉 Behat 使用它作为我们的默认会话。您可以传递一个可选参数 env_path(目前已在上方注释中)来指定应从测试中引用的环境文件名称。默认情况下,它将查找 .env.behat 文件。

此文件应像项目根目录中的标准 .env 文件一样,包含任何针对测试的特殊环境变量(例如特定的接受测试特定的数据库)。

3. 设置新的上下文

paths 配置属性指定的目录中创建一个新的上下文,使用 基本上下文 并注册 RootContext 类 如下

behat.yaml

suites:
    user:
        paths: [ '%paths.base%/app/User/Test/Feature/' ]
        # The context needed by your features tests
        contexts:
            -   Soulcodex\Behat\Addon\RootContext: ~
            -   App\User\Test\Feature\UserContext:
                    userRepository: '@App\User\Infrastructure\Persistence\Eloquent\EloquentMySqlUserRepository'

app/User/Test/Feature/UserContext.php

<?php

declare(strict_types=1);

namespace App\User\Test\Feature;

use App\User\Domain\UserRepository;
use Soulcodex\Behat\Addon\Context;

final class UserContext extends Context
{
    public function __construct(private UserRepository $userRepository)
    {
    }

    /**
     * @Given I send a request to :url
     */
    public function iSendARequestTo(string $url): void
    {
        $this->visitUrl($url); // Perform an action using the mink session 
    }
}

注意:从时间以来一直推荐使用

开始使用 Behat 编写功能测试。祝您编码愉快!

功能 🎁

💫 插即用哲学,只需创建您的上下文,从 基本上下文 扩展并开始您的功能上下文。

<?php

use Soulcodex\Behat\Addon\Context;

final class MyMarvelousContext extends Context
{
    /**
     * @Given I do a marvelous action in my application
     */
    public function iDoAMarvelousActionInMyApp(): void
    {
        $this->doMarvelousThings();
    }
}

💫 直接访问 mink 会话和执行特定 URL 的 GET 请求的快捷方式

$this->visitUrl($url); // Perform GET request to specific URI
$this->session(); // Access to the mink session to perform actions

💫 运行时访问容器以获取依赖项或执行任何操作

$this->container(); // Get laravel application container access

💫 从您的上下文获取 PHPUnit 断言

$this->assertSame(...);
$this->assertEquals(...);
$this->assertInstanceOf(...);

常见问题解答 ❓

是否会发布新功能?

当然,但我需要帮助和支持来维护和扩大此包。

  • 将此包转变为不仅仅是简单的 Behat 设置包。
  • 改进并简化开发者的生活,有利于 插即用 哲学。
  • 推动 BDD 模式,作为对齐业务和技术层的好方法/方法。

是否可能为此包做出贡献并维护它?

是的,通过 电子邮件 与我联系,主题为 Behat 扩展 - 贡献者 并发送以下数据

  • 全名 👋
  • GitHub 链接 💡 :octocat:
  • LinkedIn 以建立联系 😁
  • 最重要的是 ➡️ 想法 💡

我遇到了 "PHP 致命错误:函数嵌套级别最大为 '100',中止!" 错误。

听起来您正在使用 Xdebug。请 增加最大嵌套级别

如何贡献 / 待办事项 📄

  • 使用这个或其他库实现一个良好且易读的变更日志。
  • 使用GitHub Actions为所有Laravel版本矩阵添加测试覆盖率。
  • 自动化测试和包发布到Packagist。
  • 添加有用的特性,以提供即插即用的工具。⏱ 正在进行
  • 在配置中添加mode,以便选择KernelBrowser (默认)SeleniumBrowser实现。
  • apiweb方法创建或增强基础上下文。