在一次测试中多次使用 visit()

Use visit() few times in one single test

我正在使用 BrowserKitTestCase 包测试我的 Laravel 5.5 应用程序。如果我在一次测试中多次使用 visit() 方法,我每次都会收到失败消息,例如:

/* @test */
function my_simple_test(){
    $this->visit('product/1')
        ->see('Product #1');

    $this->visit('product/2')
        ->see('Product #2'); // assertion fails
}

但同时通过了以下测试:

/* @test */
function my_simple_test_1(){
    $this->visit('product/1')
        ->see('Product #1');

/* @test */
function my_simple_test_2(){
    $this->visit('product/2')
        ->see('Product #2'); // assertion passes
}

是否有可能在同一测试中多次使用 visit() ?这是之前 Laravel 5.1.

的案例

更新: 如果我在同一个测试中使用 visit() 两次,它看起来页面被缓存并且在调用 $this->visit('product/2') 时我仍然看到来自 /product/1.

的数据

UPDATE-2 仅当我访问具有不同参数的相同路由时才会发生,通过如下测试:

/* @test */
function my_simple_test(){
    $this->visit('products')
        ->see('All Products');

    $this->visit('product/2')
        ->see('Product #2'); // assertion passes
}

确实,每个路由都缓存了控制器实例。

要在同一测试中使用不同参数调用同一路由,应在调用之间重新启动应用程序:

/* @test */
function my_simple_test(){
    $this->visit('product/1')
        ->see('Product #1');

    $this->refreshApplication();
    $this->setUp();

    $this->visit('product/2')
        ->see('Product #2'); // assertion passes
}