我有一个Laravel 5.5应用程序,我有一个服务提供程序,我用它来将一些东西放在request->属性中以便随处访问它(简化):
namespace App\Providers;
use App\Models\Domain;
use Illuminate\Http\Request;
use Illuminate\Support\ServiceProvider;
class GlobalVarsServiceProvider extends ServiceProvider
{
/**
* Register the application services.
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap the application services.
*
* @param Request $request
*
* @return void
*/
public function boot(Request $request)
{
$domain = .. get domain with language and some logic and cache because of multiple domains ..
$request->attributes->add(['domain' => $domain]);
}
}
我在服务提供商中这样做,因为我已经可以在其他服务提供商中使用它,比如我的ViewComposerServiceProvider,我在那里为Views构建了一些东西。我可以像这样访问$ domain:
$this->domain = $request->attributes->get('domain');
效果很好。但不是在测试中。当我想在中间件中的单元测试中访问$ domain时,$ request->属性为空(在UnitTests中也可以在DuskTests中)。
看起来测试环境使用不同的请求生命周期?如果是,测试环境中还有什么不同?
我做错了什么?
- 编辑 -
测试示例:
namespace Tests\Feature;
use Tests\TestCase;
class ExampleTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function testBasicTest()
{
$response = $this->get('/');
$response->assertStatus(200);
}
}
答案 0 :(得分:0)
system.cpu.count
使用具有方法TestCase
的特征MakesHttpRequests
。在测试中使用call
方法时,它只是一个快捷方式。
在您的测试中,您可以像这样使用它:
get