这是我的代码(测试)。此方法没有其他代码:
$this->withoutMiddleware();
$fc = factory(\App\Models\FaqCategory::class)->create();
$response = $this->delete('/admin/faq-categories/'.$fc->id);
$response->assertStatus(302);
$response->assertRedirect('/admin/faq-categories/');
$this->assertDatabaseMissing('faq_categories', ['id' => $fc->id]);
我不知道为什么,但是即使数据库中不存在行,最后一个声明也会失败。对象已在第3行中删除,但第6行仍然失败。
编辑: 我想到了。我在控制器中使用模型绑定,所以我不能仅仅将$ this-> withoutMiddleware()放在测试中,因为路由模型绑定将不起作用(需要在中间件中完成某些事情)。
答案 0 :(得分:0)
有同样的问题,要么取决于您的数据库驱动程序支持什么,要么不支持(sqlite等不支持级联),或者项目很简单(就像我的情况一样愚蠢)删除。
请参见
LARAVEL UNIT TEST - Opposite of seeInDatabase
https://laracasts.com/discuss/channels/laravel/super-weird-test-failure