Я пытаюсь написать несколько тестов для приложения. У меня есть сервер, настроенный на MAMP и идущий на dev.myappnamehere.com.
Когда я запускаю тест (на основе Laracasts Integrated), он не проходит, потому что он ищет маршрут
http://localhost/p/profile
Но то, что нужно идти, это
http://dev.myappnamehere/p/profile
Как я могу изменить это, чтобы он не по умолчанию искал localhost и вместо этого шел по правильному пути?
Я попытался изменить это в тесте, но ничего не получилось, и я не смог найти ответ через поиск в Google.
<?php
use Laracasts\Integrated\Extensions\Laravel as IntegrationTest;
use Laracests\TestDummy\Factory as TestDummy;
class ExampleTest extends TestCase {
/**
* A basic functional test example.
*
* @return void
*/
public function testBasicExample()
{
$this->visit('/')
->see('Login')
->type('[email protected]', 'email')
->type('password', 'password')
->press('Login')
->seePageIs('/p/profile');
}
}
Вскоре после того, как я спросил, я наткнулся на ответ. В
LaravelTestCase.php
есть функция под названием
baseUrl()
который устанавливает URL, который ищет. Однажды я изменил, что выглядело в правильном месте. Этот файл был частью теста laracast, который я загрузил.
Для Laravel 5,
в tests
каталог должен быть файл с именем TestCase.php
, В этом файле есть свойство $baseUrl
, Обновите значение до нужного вам URL. Например изменить
protected $baseUrl = 'http://localhost';
в
protected $baseUrl = 'http://dev.myappnamehere';
Из Laravel 5.4 $baseUrl
Кажется, метод больше не работает
Кроме того, пытаясь установить URL динамически с \Config:set('app.url', 'http://dev.myappnamehere')
тоже не работает, так как кажется, что Laravel кеширует корневой URL
Способ установить пользовательский корневой URL-адрес:
\URL::forceRootUrl('http://dev.myappnamehere');
Ниже вместо
$this->visit('http://dev.myappnamehere')