2015-02-10 399 views
2

我們正在開發我們的項目在Laravel 4.我們的一個集成測試執行兩個連續的HTTP請求到同一控制器:多個HTTP請求測試

public function testFetchingPaginatedEntities() { 
    $response = $this->call('GET', "foos?page=1&page_size=1"); 
    // assertions 

    $response = $this->call('GET', "foos"); 
    // some more assertions 
} 

正如你所看到的,第二個請求不帶任何查詢字符串參數。但是,我們注意到我們的控制器在兩個請求中都收到了pagepage_size

我們能夠通過重新啓動之間的通話測試客戶端(如Laravel 4 controller tests - ErrorException after too many $this->call() - why?解釋)來解決這個問題:

public function testFetchingPaginatedEntities() { 
    $response = $this->call('GET', "foos?page=1&page_size=1"); 
    // assertions 

    $this->client->restart(); 

    $response = $this->call('GET', "foos"); 
    // some more assertions 
} 

現在我們正在考慮移植我們的項目到Laravel 5,但它看起來像$this->client不再由於L5不再使用Illuminate\Foundation\Testing\Client,因此可以在測試中使用。

任何人都可以提供重置測試客戶端的替代方案嗎?或者也許有辦法避免重新啓動它?

+1

可能與此有關 - https://github.com/laravel/framework/issues/6373 - 我剛纔報道 - 仍然沒有修復。 – Laurence 2015-02-10 07:06:45

+0

謝謝,我會密切關注它。 – cafonso 2015-02-10 07:35:59

+1

@TheShiftExchange fyi,我在Github上打開了一個問題,看起來他們已經修復了它:https://github.com/laravel/framework/pull/7380 – cafonso 2015-02-10 19:09:34

回答

1
$this->refreshApplication() ; 

調用之間解決了我在Laravel 5.4上的問題。