【发布时间】:2019-05-15 07:02:39
【问题描述】:
随着我越来越多地在 laravel 5+ 中进行测试,尤其是在 5.8 中,我倾向于编写自己的断言来处理繁琐的操作。我目前的方法是在 setup 函数的 Base Testcase 文件中存储一堆宏。
不完全相关,但我引用了我自己的测试用例文件,该文件是从 composer 包中提取的,并且在我改进它时它会从一个项目到另一个项目。
但是,它已经到了存在大量宏的地步,当我在搜索需要更新的宏或在它附近编写另一个新宏时,我开始感到痛苦。所以我觉得重构是有序的,但我不确定重构它的最佳方法是什么。
如果巧妙地使用特征或服务提供者,甚至是管道类,有没有办法可以完成同样的事情?
这是我的 TestCase 文件的示例
<?php
namespace Quicktools\Tests; // Not Relevant but just being pulled in
use \Exception;
use Quicktools\Model; // Same, the laravel base model except macroable
use PHPUnit\Framework\Assert;
use Illuminate\Support\Collection as BaseCollection;
use Illuminate\Foundation\Testing\TestResponse;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
abstract class TestCase extends BaseTestCase
{
use \Tests\CreatesApplication;
public function setUp(): void
{
parent::setUp();
//TESTRESPONSE ASSERTIONS
//MACROS HERE (with an example for clarity)
TestResponse::macro('data', function ($key = null) {
if (!is_null($key)) {
return $this->original->getData()[$key];
}
return is_null($this->original->getData())
? null : collect($this->original->getData());
});
//COLLECTION ASSERTIONS
//MACROS HERE
//VUE COMPONENT ASSERTIONS
//MACROS HERE
//STATUS ASSERTIONS
//MACROS HERE
//AJAX/AXIOS ASSERTIONS
//MACROS HERE
}
}
有没有办法将这些宏分解成不同的文件,以便更容易组织?
【问题讨论】: