Laravel 集成测试在 运行 作为 class 时抛出虚假 404 错误,个别测试工作正常
Laravel integration test throwing spurious 404 error when run as a class, individual tests work fine
我正在使用 L5.1 中的新集成测试工具。我在 运行 测试时遇到一些奇怪的错误 class - 大多数是我正在测试的页面上的 404。奇怪的是,当我过滤到单个测试时,测试顺利通过。当我 运行 整个测试 class 或它所属的测试套件时,它失败并显示 404。该路由在浏览器中有效,当我 运行 本身时测试通过,所以这显然不是一个有效的错误。
代码如下所示:
class MyTest extends \TestCase
{
use WithoutMiddleware;
public function __construct() {
parent::__construct();
$this->mock = m::mock('MyApp\Stuff\Repository');
$this->validator = m::mock('Illuminate\Validation\Factory');
$this->mockedClass = m::mock('MyApp\Stuff\Service');
}
/**
* @test
*/
public function it_should_get_all_thingies() {
$this->mockedClass->shouldReceive('someMethod')
->once()
->andReturn('yay');
$this->app->instance('MyApp\Stuff\Service', $this->mockedClass);
$this->visit('/api/v1/thingies');
}
}
当我运行
phpunit --filter=it_should_get_all_thingies
,它工作正常。
当我 运行
phpunit --filter=MyTest
,它死于 404。我可以将错误消息中的相关 URL 复制到浏览器中,它工作正常。
我能想到的唯一其他相关事实是,这是从 L4.2 到 5.0 再到 5.1 的更新。
非常感谢任何帮助。
找出触发错误的原因以及解决方法。我正在拉入这样的辅助路由文件:
Route::get('/', function () {
return view('welcome');
});
Route::group(['prefix' => 'api/v1'], function() {
require_once_app_path(__DIR__ . '/routes2.php');
});
require_once_app_path
触发了问题。在 L4.2 或 L5.0 中没有发生,在我们升级到 5.1 时开始。将其替换为 require
似乎可以解决问题。
我正在使用 L5.1 中的新集成测试工具。我在 运行 测试时遇到一些奇怪的错误 class - 大多数是我正在测试的页面上的 404。奇怪的是,当我过滤到单个测试时,测试顺利通过。当我 运行 整个测试 class 或它所属的测试套件时,它失败并显示 404。该路由在浏览器中有效,当我 运行 本身时测试通过,所以这显然不是一个有效的错误。
代码如下所示:
class MyTest extends \TestCase
{
use WithoutMiddleware;
public function __construct() {
parent::__construct();
$this->mock = m::mock('MyApp\Stuff\Repository');
$this->validator = m::mock('Illuminate\Validation\Factory');
$this->mockedClass = m::mock('MyApp\Stuff\Service');
}
/**
* @test
*/
public function it_should_get_all_thingies() {
$this->mockedClass->shouldReceive('someMethod')
->once()
->andReturn('yay');
$this->app->instance('MyApp\Stuff\Service', $this->mockedClass);
$this->visit('/api/v1/thingies');
}
}
当我运行
phpunit --filter=it_should_get_all_thingies
,它工作正常。
当我 运行
phpunit --filter=MyTest
,它死于 404。我可以将错误消息中的相关 URL 复制到浏览器中,它工作正常。
我能想到的唯一其他相关事实是,这是从 L4.2 到 5.0 再到 5.1 的更新。
非常感谢任何帮助。
找出触发错误的原因以及解决方法。我正在拉入这样的辅助路由文件:
Route::get('/', function () {
return view('welcome');
});
Route::group(['prefix' => 'api/v1'], function() {
require_once_app_path(__DIR__ . '/routes2.php');
});
require_once_app_path
触发了问题。在 L4.2 或 L5.0 中没有发生,在我们升级到 5.1 时开始。将其替换为 require
似乎可以解决问题。