mileschou / slim-test
为 Slim Framework 3 简单测试助手
v0.0.1
2022-06-24 15:55 UTC
Requires
- php: ^7.2 | ^8.0
- illuminate/database: ^6 | ^7 | ^8 | ^9
- slim/slim: ^3.4
- symfony/css-selector: ^5 | ^6
- symfony/dom-crawler: ^5 | ^6
Requires (Dev)
- ext-json: *
- behat/behat: ^3.10
- phpunit/phpunit: ^8.5 | ^9
- squizlabs/php_codesniffer: ^3.7
This package is auto-updated.
Last update: 2024-08-24 21:24:51 UTC
README
为 Slim Framework 3 提供简单的测试助手
该存储库在 tests
文件夹中包含一些示例。 app.php 是使用简单 Slim 路由的定义,SlimCaseTest.php 是对 SlimCase
类的测试,而 ClientTest.php 是对 Client
类的测试。如果您想使用 PHPUnit 风格编写测试,则可以使用 Client
;或者使用 Codeception 风格的 SlimCase
。
使用 Composer 安装
$ composer require --dev mileschou/slim-test
在 PHPUnit 中使用对象
首先,在测试代码中准备您的 Slim 应用程序,并将其传递给 SlimCase
构造函数。
use MilesChou\Slim\Test\SlimCase; class SlimAppTest extends PHPUnit_Framework_TestCase { public function setUp() { $app = require 'path/to/app.php'; $this->slimCase = new SlimCase($app); } }
现在,您可以使用 Codeception 风格 进行断言。
public function testSeeResponseOk() { // Arrange $url = '/will/return/ok'; // Act $this->slimCase->sendGET($url); // Assert $this->slimCase->seeResponseOk(); }
Client
对象在 SlimCase
中的可见性为公共。这意味着您可以使用 Client
如下所示:
$this->slimCase->client->get($url);
直接访问客户端对象是不安全的。未来可见性将修改为
private
。
在 PHPUnit 中使用 trait
您还可以在 PHPUnit 中使用 ClientTrait
或 SlimCaseTrait
。以下是一个示例:
use MilesChou\Slim\Test\SlimCaseTrait; class SlimAppTest extends PHPUnit_Framework_TestCase { use SlimCaseTrait; public function setUp() { $app = require 'path/to/app.php'; $this->setSlimApp($app); } public function tearDown() { $this->setSlimApp(null); } public function testSeeResponseOk() { // Arrange $url = '/will/return/ok'; // Act $this->sendGET($url); // Assert $this->seeResponseOk(); } }
在 Behat 中使用
在 Behat 中使用 Slim Test 很简单。例如,我有一个功能文件
# features/app.feature Feature: an example testing use behat Scenario: Test assert response is okay Given a route named "/will/return/ok" When visit "/will/return/ok" Then I should see response okay
并轻松实现上下文文件
// features/bootstrap/FeatureContext.php use Behat\Behat\Context\Context; use Behat\Behat\Context\SnippetAcceptingContext; use MilesChou\Slim\Test\SlimCaseTrait; class FeatureContext implements Context, SnippetAcceptingContext { use SlimCaseTrait; public function __construct() { // bootstrap your slim app $app = require __DIR__ . '/../../app.php'; $this->setSlimApp($app); } /** @Given a route named :url */ public function aRouteNamed($url) { /** Do nothing */ } /** @When visit :url */ public function visit($url) { $this->sendGET($url); } /** @Then I should see response okay */ public function iShouldSeeResponseOkay() { $this->seeResponseOk(); } }
测试
$ php vendor/bin/phpunit
$ php vendor/bin/behat
您也可以使用 composer 脚本
$ composer test
如果您想通过浏览器检查 HTTP 响应,则运行 PHP 内置服务器
$ php -S 0.0.0.0:8080 -t public
许可证
Slim Test 在 MIT 许可证下发布。有关更多信息,请参阅 许可证文件。