jeroen-g/testassist

PHPUnit 测试辅助工具

1.5.2 2019-06-26 13:25 UTC

This package is auto-updated.

Last update: 2024-08-27 00:43:50 UTC


README

Latest Version on Packagist Total Downloads StyleCI

此包包含一些小巧的辅助函数和断言,这些函数都是为了Laravel而设计的。大多数函数都可以在其他包、教程或仓库中找到,并为每个函数提供了致谢。

安装

通过Composer

$ composer require jeroen-g/testassist

使用方法

所有辅助函数都设计为特质,并按浏览器、控制台和文件系统测试组件组织。如果您想使用所有辅助函数,只需使用通用的Assistants,它将为您包含所有其他函数。

use JeroenG\TestAssist\Assistants;

class MyTest {
    use Assistants;

    // ...
}

通用函数

AssertIsCalled

use JeroenG\TestAssist\Assistants

此函数接受两个参数,第一个是需要调用的类名,第二个是在其中调用类的回调函数。例如,可以是一个事件监听器

public function test_this()
{
    $this->assertIsCalled(UserHasSignedUp::class, function() {
        User::create([....]);
    });
}

浏览器(Laravel Dusk)

ClearCookiesBetweenTests

use JeroenG\TestAssist\Browser\ClearCookiesBetweenTests

使用此特质将确保在每个测试之间用户被登出,并且所有(会话)cookie都被删除。最佳的使用方式是修改TestCase的tearDown()

use JeroenG\TestAssist\Browser\ClearCookiesBetweenTests;

protected function tearDown()
{
    parent::tearDown();
    $this->clearCookies();
}

控制台

OutputAssertions

use JeroenG\TestAssist\Console\OutputAssertions

包含两个函数:seeInConsoleOutput($text) 和 'doNotSeeInConsoleOutput($text)` 检查是否在控制台输出中出现了(未)期望的文本。

异常处理

use JeroenG\TestAssist\Console\ExceptionHandling

使用 disableExceptionHandling() 获取完整的堆栈跟踪,而不是类似 error 500 的消息。使用 withExceptionHandling() 重新激活Laravel的错误渲染。

数据库

FabricateModels

use JeroenG\TestAssist\Database\FabricateModels

包含两个函数作为Laravel工厂方法的快捷方式,用于创建/制作模型实例。最短的使用方法如下

$member = $this->create(User::class);
$member = $this->make(User::class);

DataAssertions

use JeroenG\TestAssist\Database\DataAssertions

包含两个方法,用于断言Eloquent模型是否已插入到数据库中(技术上是对 assertDatabaseHas() 的别名)或其行是否已更新或删除。

$this->assertCreated('users', $member);
$this->assertUpdated('users', $member);
$this->assertDeleted('users', $member);

SQLiteRegex

use JeroenG\TestAssist\Database\SQLiteRegex

将以下函数添加到您的 SetUpBeforeClass 中,以使SQLite能够使用 REGEXP 语句。更多信息 这里,并应致谢 这里

$this->AddRegexToSQLite();

SeedDatabase

use JeroenG\TestAssist\Database\SeedDatabase

如果使用该特质,将运行您的 DatabaseSeeder 类。在您的测试用例的 setUp 方法中,您应该运行此操作

// At the top of your class:
use JeroenG\TestAssist\Assistants;

// in setUp():
$this->runSeeder();

如果您不使用整个助手集(请参阅使用部分顶部),请在您的 setUp() 方法中放置以下代码以仅运行一次

// If Concerns\SeedDatabase is used, go seed the database, but only once per class.
if (isset(static::$seedDatabase) && static::$seedDatabase != false) {
    $this->seedDatabase();
    static::$seedDatabase = false;
}

文件系统

ManageFilesystem

use JeroenG\TestAssist\Filesystem\ManageFilesystem

目前此特质只有 removeDir($path) 函数,用于删除目录及其所有内容。

FileAssertions

use JeroenG\TestAssist\Filesystem\FileAssertions

存在几个断言用于处理文件和目录的存在性。

function test_filesystem() {
    $this->assertFileExistsOnDisk($filename); // Optionally pass the storage disk (defualt: local)
    $this->assertFileNotExistsOnDisk($filename);
    $this->assertFileExistsInZip($zipPath, $filename);
    $this->assertFileDoesntExistsInZip($zipPath, $filename);
}

当然,底层的函数如 pathExists() 也可供使用。

变更日志

请参阅 changelog 了解最近的变化。

贡献

请参阅 contributing.md 了解详细信息和一个待办事项列表。

致谢

许可证

EUPL-1.1。请参阅许可证文件以获取更多信息。