Laravel 5.1子域单元测试

时间:2015-10-20 12:12:50

标签: php unit-testing laravel laravel-5.1

我试图在我的Laravel 5.1应用程序中拥有多个域

Route::group(['domain' => 'api.example.local'], function() {
    Route::resource('users', 'ResultController');
});

Route::group(['domain' => 'www.example.local'], function() {
    Route::resource('home', 'HomeController');
});

当我为api.example.local进行单元测试时

public function testApiCall() {
    $this->get('v1/users')->seeJson(['data' => 'users']);
}

然而,这种方法失败了,并且它返回了404请求。 因此,我将测试网址更改为此类

public function testApiCall() {
    $this->get('http://api.example.local/v1/users')->seeJson(['data' => 'users']);
}

最后,它是单元测试的绿色。

我想知道这是否是正确的做法? 另外,我将有不同的环境,例如http://api.example.stage/v1/users。这是否意味着当我为舞台进行单元测试时,我需要将更改网址更改为http://api.example.stage/v1/users

2 个答案:

答案 0 :(得分:0)

是的,这对我来说是非常正确的。我也这样做。

我只使用call代替get

$this->call('GET',...
$this->assertResponseOk();

答案 1 :(得分:0)

对我来说几乎一样,但是我正在设置ENV变量。

.env

FOO_DOMAIN=foo.example.com
WWW_DOMAIN=www.example.com

路线

Route::domain(env('WWW_DOMAIN'))->group(function () {
    Route::get('/', 'IndexController@index')->name('index');
});

Route::domain(env('FOO_DOMAIN'))->group(function () {
    Route::get('/', 'FoolishController@index')->name('foolish');
});

Phpunit

$this->get('https://' . env('WWW_DOMAIN') . '/')
            ->assertSuccessful()
            ->assertSeeInOrder(['Home']);