我目前正在运行一些测试,一切都在本地完美运行。一旦我在Travis上运行它我就会收到错误,但我无法解释自己的原因。
有趣的事实:我在其他测试中使用相同的代码(只是使用不同的路径),它在本地和Travis上工作。
Tests: 372, Assertions: 906, Failures: 1.
我尝试通过JSON或GET请求而不是使用Visit-Method来调用页面。没有任何成功。
特拉维斯错误
1) Tests\Feature\Administrators\Users\UsersControllerTest::administrators_can_visit_administrators_users_index
A request to [http://localhost:8000/backend/administrators/users] failed. Received status code [500].
/home/travis/build/StanBarrows/ch.example/vendor/laravel/browser-kit-testing/src/Concerns/InteractsWithPages.php:220
/home/travis/build/StanBarrows/ch.example/vendor/laravel/browser-kit-testing/src/Concerns/InteractsWithPages.php:92
/home/travis/build/StanBarrows/ch.example/vendor/laravel/browser-kit-testing/src/Concerns/InteractsWithPages.php:73
/home/travis/build/StanBarrows/ch.example/tests/Feature/Administrators/Users/UsersControllerTest.php:44
测试1 - administrators_can_visit_administrators_users_index
$route = 'backend.administrators.users.index';
$this->logInAs(null, 'administrator');
$this->visitRoute($route);
$this->assertResponseOk();
$this->seeRouteIs($route);
尝试过的解决方法
$this->call('GET', route($route));
或
$this->visit(route($route))
有什么建议吗?
答案 0 :(得分:1)
问题正确存在于您尚未发布的代码中。问题是代码中处理的错误并转换为错误页面。在浏览器中访问页面时这很好,但在调试测试时不太好。您可以通过禁用异常处理程序来解决此问题。
在你的主testcase.php文件中添加这个函数:
public static int calculate(string number)
{
var reverseNums = number.ToCharArray().Reverse().Select(c => c - '0').ToList();
//Do whatever on the reverseNums
}
然后在失败的测试中,在测试的顶部添加此行:
protected function disableExceptionHandling()
{
$this->oldExceptionHandler = $this->app->make(ExceptionHandler::class);
$this->app->instance(ExceptionHandler::class, new class extends Handler {
public function __construct() {}
public function report(\Exception $e) {}
public function render($request, \Exception $e) {
throw $e;
}
});
}
你仍然会有错误,但会更清楚。