PHPUnit:测试 POST 请求

Posted

技术标签:

【中文标题】PHPUnit:测试 POST 请求【英文标题】:PHPUnit: testing POST request 【发布时间】:2020-03-26 23:31:50 【问题描述】:

我想测试 POST 请求。我的控制器的方法如下所示:

  public function store(Request $request)
  
      $this->Validate($request, [
        'name' => 'required|string|min:5'
      ]);
      $product = Product::create([
        'name' => $request->name
      ]);
      return redirect()->back();
  

所以,我写了这个简单的测试,但我有一个错误,因为它收到了 302 代码:

$response = $this->post('/product/store', [
          'name' => 'Hello'
        ])
        ->assertStatus(201);

我认为这个问题是因为我在存储数据后重定向页面。如何测试这个 POST 请求?

【问题讨论】:

声明正确的状态 这能回答你的问题吗? Laravel - Testing what happens after a redirect 【参考方案1】:

对于重定向,您可以断言状态为 302 (https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection)

$response = $this->post('/product/store', [
      'name' => 'Hello'
    ])
    ->assertStatus(302);

【讨论】:

以上是关于PHPUnit:测试 POST 请求的主要内容,如果未能解决你的问题,请参考以下文章

接口自动化测试系列之PHPUnit-POST请求接口测试方法

接口自动化测试系列之PHPUnit-POST请求接口测试方法

带有 JSON 请求的 Laravel/phpunit 测试丢失了重要的请求细节

Laravel 5 PHPUnit 测试 json 帖子

如何为邮递员 API 请求编写 Laravel PHPUnit 测试

在 laravel 4 中使用 phpunit 测试 POST