在一次测试中多次使用 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
}
我正在使用 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
}