shortcodes / tests
这是用于 Laravel 应用的测试包
0.0.5
2021-01-22 14:24 UTC
Requires
- php: >=7.0.0
This package is auto-updated.
Last update: 2024-09-10 11:33:35 UTC
README
这是一个测试工具包,用于帮助正确测试 Laravel 应用
工具
API CRUD 测试
要测试 API 中的 CRUD,您需要创建一个继承自 Shortcodes\Tests\Blueprints\ApiCrudTest 的测试,并在受保护的属性中提供模型类
class ModelCrudTest extends ApiCrudTest
{
protected $model = Model::class;
}
默认情况下,测试将执行以下断言以测试
- i_can_make_index_request_and_get_200_status
- i_can_make_show_request_and_get_200_status
- i_can_make_store_request_and_get_201_status
- i_can_make_update_request_and_get_200_status
- i_can_make_delete_request_and_get_204_status
必须记住,提供的 model 必须有一个带有有效生成数据的工厂。
如果 index 方法需要一些查询字符串参数,您可以在类方法中定义它
class ModelCrudTest extends ApiCrudTest
{
protected $model = Model::class;
public function getQueryStringParams(){
return [
'length' => 10,
'page' => 1
];
}
}
表单请求测试
要测试 API 中的表单请求,您需要创建一个继承自 Shortcodes\Tests\Blueprints\FormRequestTest 的测试,并在受保护的属性中提供请求类
class IndexModelRequestTest extends FormRequestTest
{
protected $model = IndexModelRequest::class;
}
FormRequestTest 类允许使用类似以下示例中的方法来验证请求
class IndexModelRequestTest extends FormRequestTest
{
protected $model = IndexModelRequest::class;
public function testValidRequest(){
$this->prepareRequest(['some_data'=>'value'])->assertValidRequest()
}
public function testInvalidRequest(){
$this->prepareRequest(['some_data'=>'value'])->assertInvalidRequest()
}
public function testInvalidParameterInRequest(){
$this->prepareRequest(['some_data'=>'value','invalid_parameter'=>'value'])
->assertInvalidRequest()
->assertInvalidParameter(['invalid_parameter'])
->assertInvalidParameter('invalid_parameter') //or without array
->assertInvalidParameter('missing_request_required_parameter')
}
public function testValidParameterInInvalidRequestRequest(){
$this->prepareRequest(['some_data'=>'value','invalid_parameter'=>'value'])
->assertInvalidRequest()
->assertInvalidParameter(['invalid_parameter'])
->assertValidParameter(['some_data'])
}
}
还有可能通过查询参数测试带有所需注入模型(如)的请求。
class IndexModelRequestTest extends FormRequestTest
{
protected $model = UpdateModelRequest::class;
public function testTitleDuplicationRequest(){
$object = Model::first();
$this->prepareRequest(['title'=>$object->title'], $object)->assertValidRequest()
}
}
API 请求测试
要测试 API 请求,您需要创建一个继承自 Shortcodes\Tests\Blueprints\TestCase 的测试。这是一个简单包装了标准方法的包装器,允许编写更少的代码。
$response = $this->apiRequest('POST', url('named.route.name'), $data, $headers);
创建请求的方法将模拟类 user 属性中定义的用户,或者从工厂创建一个,并附加用于授权的标头 X-App-Token,该标头来自 env('AUTH_KEY')。