所有在PHPUnit上的测试都可以正常工作。但是,当我在View::share
中添加AppServiceProvider
时,所有PHPUnit测试都失败了。
AppServiceProvider.php
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
\View::share('categories', \App\Models\Category::all());
}
}
错误
Illuminate \ Database \ QueryException:SQLSTATE [HY000]:常规错误:1没有这样的表:category(SQL:从“ categories”中选择*)
我已经在所有测试中使用了RefreshDatabase
。
请指导我,如何解决此问题。我应该在Laravel应用中的何处调用View::share
,以便所有测试都可以通过。
答案 0 :(得分:1)
之所以发生这种情况,是因为事实上该数据库甚至不存在,并且提供程序启动假定该数据库/表已启动并正在运行。
通过包装将其固定得更多
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
if(\Schema::hasTable('categories'){
\View::share('categories', \App\Models\Category::all());
}
}
}