Laravel 5.5 功能测试说它在工厂提供时缺少一个字段
Laravel 5.5 feature test says it's missing a field when the factory provides it
我的产品工厂包含一个 slug:
$factory->define(Product::class, function (Faker $faker) {
return [
'title' => $faker->sentence(4, true),
'slug' => $faker->slug,
'description' => $faker->paragraph,
];
});
我的功能测试使用工厂创建一个新实例:
$product = factory(Product::class)->make();
$response = $this->post('admin/products/store', $product->toArray());
$editPage = $this->get($response->headers->get('Location'));
$editPage->assertSeeText($product->title);
当我 运行 测试时,我收到一个 SQL 错误,指出 slug 丢失:
Error creating product:SQLSTATE[23000]: Integrity constraint violation: 19 NOT NULL constraint failed: products.slug (SQL: insert into "products" ("title", "description", "updated_at", "created_at") values (Velit quisquam et accusamus debitis et., Aperiam sint architecto ut sit pariatur aliquid. Et et omnis perspiciatis. Est officiis accusamus enim ut rerum cumque., 2018-02-05 23:58:02, 2018-02-05 23:58:02))
同样的方法适用于我的其他功能测试。测试是 运行,因为经过身份验证的管理员将获得所有必要的权限。
我没有50声望,所以不能发表评论!
我只是想知道你有没有在产品模型中做可填充的东西
protected $fillable = ['slug'];
我的产品工厂包含一个 slug:
$factory->define(Product::class, function (Faker $faker) {
return [
'title' => $faker->sentence(4, true),
'slug' => $faker->slug,
'description' => $faker->paragraph,
];
});
我的功能测试使用工厂创建一个新实例:
$product = factory(Product::class)->make();
$response = $this->post('admin/products/store', $product->toArray());
$editPage = $this->get($response->headers->get('Location'));
$editPage->assertSeeText($product->title);
当我 运行 测试时,我收到一个 SQL 错误,指出 slug 丢失:
Error creating product:SQLSTATE[23000]: Integrity constraint violation: 19 NOT NULL constraint failed: products.slug (SQL: insert into "products" ("title", "description", "updated_at", "created_at") values (Velit quisquam et accusamus debitis et., Aperiam sint architecto ut sit pariatur aliquid. Et et omnis perspiciatis. Est officiis accusamus enim ut rerum cumque., 2018-02-05 23:58:02, 2018-02-05 23:58:02))
同样的方法适用于我的其他功能测试。测试是 运行,因为经过身份验证的管理员将获得所有必要的权限。
我没有50声望,所以不能发表评论! 我只是想知道你有没有在产品模型中做可填充的东西
protected $fillable = ['slug'];