如何设置laravel测试以转到站点名称而不是localhost

Roc*_*ice 10 php testing phpunit integration-testing laravel

我正在尝试为应用程序编写一些测试.我在MAMP上设置了服务器,访问dev.myappnamehere.com.

当我运行测试(基于Laracasts Integrated)时,它会失败,因为它正在寻找路线

 http://localhost/p/profile
Run Code Online (Sandbox Code Playgroud)

但它需要做的是

 http://dev.myappnamehere/p/profile
Run Code Online (Sandbox Code Playgroud)

我怎样才能更改它,以便它不会默认寻找localhost而是转到正确的路径?

我试图在测试中改变这一点,但无处可去,我无法通过谷歌搜索找到答案.

 <?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('example@example.com', 'email')
        ->type('password', 'password')
        ->press('Login')
        ->seePageIs('/p/profile');
  }

}
Run Code Online (Sandbox Code Playgroud)

Mop*_*ppo 7

从Laravel 5.4开始,该$baseUrl方法似乎不再适用

此外,试图设置url dinamically \Config:set('app.url', 'http://dev.myappnamehere')也不起作用,因为似乎Laravel缓存根URL

设置自定义根URL的方法是:

\URL::forceRootUrl('http://dev.myappnamehere');
Run Code Online (Sandbox Code Playgroud)

  • `URL::forceRootUrl` 节省了我用 phpunit 和 Ngrok 在 Laravel 中调试 webhook 的时间! (2认同)

Roc*_*ice 6

所以在我问到我偶然发现答案后不久.在

 LaravelTestCase.php 
Run Code Online (Sandbox Code Playgroud)

有一个叫做的函数

  baseUrl() 
Run Code Online (Sandbox Code Playgroud)

它设置了它寻找的网址.一旦我改变它,它看起来在正确的位置.该文件是我加载的laracast测试的一部分.


Dal*_*lin 6

对于Laravel 5,在tests目录中应该有一个名为的文件TestCase.php.在该文件中是一个属性$baseUrl.将值更新为您想要的网址.例如改变

protected $baseUrl = 'http://localhost';
Run Code Online (Sandbox Code Playgroud)

protected $baseUrl = 'http://dev.myappnamehere';
Run Code Online (Sandbox Code Playgroud)