我正在用BrowserKitTestCase包测试我的Laravel5.5应用程序。如果每次在一个测试中使用不止一次访问()方法,我都会收到一个失败,例如:
/* @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
}是否有可能在同一测试中多次使用()?这是拉拉维尔5.1之前的一个案例。
UPDATE:如果我在同一个测试中两次使用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
}发布于 2019-02-01 14:45:49
实际上,每个路由都缓存控制器实例。
要用相同的测试中的不同参数调用相同的路由,应用程序应该在调用之间重新启动:
/* @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
}https://stackoverflow.com/questions/49629867
复制相似问题