大多数答案都是更改生产代码,我不喜欢这一点。
既然\Illuminate\Contracts\Foundation\Application在您的测试中可用,我们就使用它吧!
<?php
declare(strict_types=1);
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\Company;    
class CompanyFeatureTest extends TestCase
{
    /**
     * @return void
     */
    protected function setUp(): void
    {
        parent::setUp();
        $this->app->bind(Company::class, function () {
            return (new Company())->setConnection(config('database.default'));
        });
    }
}
Run Code Online (Sandbox Code Playgroud)
每当您的Company班级被调用时,我们都会返回一个经过操作的班级。
在这一项中,我们改变了$connection属性。
如果您的 中有以下内容phpunit.xml:
<server name="DB_CONNECTION" value="sqlite"/>
Run Code Online (Sandbox Code Playgroud)
config('database.default')的值为sqlite。
有关绑定的更多信息可以在这里找到:https ://laravel.com/docs/5.8/container#binding
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           1352 次  |  
        
|   最近记录:  |