shortcodes/tests

这是用于 Laravel 应用的测试包

0.0.5 2021-01-22 14:24 UTC

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')