Laravel测试响应与给定数据无效

时间:2019-04-30 19:25:03

标签: php laravel unit-testing automated-tests

我正在使用laravel进行单元测试,所以我调用了控制器函数,并且得到了一个像数组一样的响应
我对此一直有回应

return back()->with('success', 'Lots was generated')  

return $this->lots_available;  

测试给我以下答复:

  

有1个错误:

     
      
  1. Tests \ Feature \ LotTest :: test_lots   Illuminate \ Validation \ ValidationException:给定的数据无效。
  2.   

我不了解此响应的原因,我从测试开始

这是我的功能测试

public function test_lots()  
{    
    $this->withoutExceptionHandling();  

    $product = factory(Product::class)->create([
        'size' => 20
    ]);

    $lots = factory(Lot::class, 10)->create([
        'product_id' => $product->id,
    ]);

    $admin = factory(User::class)->create([
        'role_id' => 3
    ]);

    $client_request = 500;

    $this->actingAs($admin)
    ->post(route('lots.distribution'), [$product, $client_request])
    ->assertStatus(200);
}  

这就是我所谓的方法

public function distribute(ProductRequest $product, $client_order)
{
    $this->lots = $product->lots;  
    $this->client_order = $client_order;  
    $this->getLotAvailable();

    return $this->lots_available;  
}

2 个答案:

答案 0 :(得分:0)

假设您的路线类似于Route::post('/distribute/{product}/{client_order}')

route('lots.distribution')需要函数调用中的参数

route('lots.distribution', [$product, $client_request])

然后,您需要在ProductRequest中发送通过规则的数据,否则将收到验证错误。如果您在发布后尝试使用dd(session('errors')),则可能会看到有关缺少字段的错误。

->post(
    route('lots.distribution', [$product, $client_request]), 
    ['title => 'unique_title', 'sap_id' => 'unique_id']
)

最后,在您的方法中,我假设请求ProductRequest与模型产品不同:

public function distribute(ProductRequest $request, Product $product, $client_order)

答案 1 :(得分:0)

将响应放入变量中,然后使用dd()进行打印。

您可以在messages方法中找到它。 为我工作。

dd($response);