Laravel TDD 断言数组具有键“id”失败

Posted

技术标签:

【中文标题】Laravel TDD 断言数组具有键“id”失败【英文标题】:Laravel TDD Failed asserting that an array has the key 'id' 【发布时间】:2020-06-20 15:07:15 【问题描述】:

我一直在关注这个series 来了解 Laravel 的 TDD。我来了

断言数组具有键“id”失败。

运行测试命令时出现错误消息。

下面是我的代码:

api.php

Route::namespace('API')->group(function()
    Route::post('/products', 'ProductController@store');
);

ProductController.php

namespace App\Http\Controllers\API;
use App\Product;
public function store(Request $request)
    
       $product =  Product::create([
            'name' => $request->name,
            'slug' => $request->slug,
            'price' => $request->price
        ]);
        return response()->json($product, 201);
    

ProductControllerTest.php

public function can_create_a_product()
    
        $faker = Factory::create();

        $response = $this->json('POST', '/api/products', [
            'name' => $name = $faker->company,
            'slug' => str_slug($name),
            'price' => $price = random_int(10, 100)
        ]);
        $response->assertJsonStructure([
            'id', 'name', 'slug', 'price', 'created_at'
        ])
        ->assertJson([
            'name' => $name,
            'slug' => str_slug($name),
            'price' => $price
        ])
        ->assertStatus(201);

        $this->assertDatabaseHas('products', [
            'name' => $name,
            'slug' => str_slug($name),
            'price' => $price
        ]);
        
    

产品表结构:

id | image | name | price

我正在关注的视频系列是在 laravel 5.7 上制作的,我正在运行 Laravel 7。 这是错误的原因吗?

【问题讨论】:

【参考方案1】:

发现我需要使用

use RefreshDatabase;

特质。

【讨论】:

以上是关于Laravel TDD 断言数组具有键“id”失败的主要内容,如果未能解决你的问题,请参考以下文章

PHPUnit中的嵌套数组键值断言

Laravel“外键约束失败”

Laravel 5 迁移 - 外键约束失败

Laravel 单元测试断言函数总是失败

Laravel Eloquent:返回数组键作为字段 ID

JSON 响应断言失败 PHP 单元