Я (мы) создаем пакет, который выступает в качестве основного компонента для нашей будущей CMS, и, конечно же, этот пакет нуждается в некоторых модульных тестах. Когда пакет регистрируется, первое, что он делает, это устанавливает внутренний/внешний контекст следующим образом:
class FoundationServiceProvider extends ServiceProvider
{
// ... stuff ...
public function register()
{
// Switch the context.
// Url's containing '/admin' will get the backend context
// all other urls will get the frontend context.
$this->app['build.context'] = request()->segment(1) === 'admin'
? Context::BACKEND
: Context::FRONTEND;
}
}
Поэтому, когда я посещаю URL-адрес /admin, для переменной app('build.context') будет установлено значение backend
, в противном случае для нее будет установлено значение `frontend.
Чтобы проверить это, я создал следующий тест:
class ServiceProviderTest extends \TestCase
{
public function test_that_we_get_the_backend_context()
{
$this->visit('admin');
$this->assertEquals(Context::BACKEND, app('build.context'));
}
}
Когда я запускаю код в браузере (переход к /admin), контекст будет выбран, и вызов app('build.context')
вернет backend
, но при запуске этого теста я всегда получаю «интерфейс».
Я что-то не заметил или неправильный код при использовании phpunit?
заранее спасибо