soulcodex / laravel-behat
Laravel 扩展,易于与 Behat 集成
1.0.6
2024-03-27 13:10 UTC
Requires
- php: ^8.0|^8.1
- behat/behat: ^3.0
- behat/mink-browserkit-driver: ^2.1
- friends-of-behat/mink-extension: ^2.7
- illuminate/contracts: ^8.0|^9.0|^10.0|^11.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
- phpunit/phpunit: ^10.0
- symfony/event-dispatcher: ^6.2
- symfony/http-kernel: ^7.0
Requires (Dev)
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 链接 💡

- LinkedIn 以建立联系 😁
- 最重要的是 ➡️ 想法 💡
我遇到了 "PHP 致命错误:函数嵌套级别最大为 '100',中止!" 错误。
听起来您正在使用 Xdebug。请 增加最大嵌套级别。
如何贡献 / 待办事项 📄
- 使用这个库或其他库实现一个良好且易读的变更日志。
- 使用GitHub Actions为所有Laravel版本矩阵添加测试覆盖率。
- 自动化测试和包发布到Packagist。
- 添加有用的特性,以提供
即插即用的工具。⏱ 正在进行 - 在配置中添加
mode,以便选择KernelBrowser (默认)或SeleniumBrowser实现。 - 为
api和web方法创建或增强基础上下文。