jeroen-g / testassist
PHPUnit 测试辅助工具
README
此包包含一些小巧的辅助函数和断言,这些函数都是为了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。请参阅许可证文件以获取更多信息。