【问题标题】:Laravel Codeception acceptance test coverage routes not recognizedLaravel Codeception 验收测试覆盖路线无法识别
【发布时间】:2015-01-14 17:11:43
【问题描述】:

我正在尝试使用 codeception 验收测试为我的控制器生成代码覆盖率,但是当我使用覆盖率运行测试时,Laravel 不知道如何处理这条路线。

c3.php 已设置并包含在 public/index.php 中 - 我已验证正确的页面。

 [ErrorException] file_get_contents(http://localhost/c3/report/clear): failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error

有需要添加的路线吗?

【问题讨论】:

  • 你能分享你的acceptance.suite.yml吗?
  • 提供的链接已损坏并导致恶意网站。请删除。
  • @fkupper 感谢您的报告,链接已删除。
  • @Webnet 谢谢。在我新工作的第一周,我的屏幕上就出现了色情内容,这并不好。

标签: laravel codeception


【解决方案1】:

这很难评估,因为可能有很多事情会导致这种情况。我不确定是路由问题,但可能是之前的步骤(因为它不是 4xx 错误)。 在 Laravel 中,通常当我遇到 500 问题时,尤其是在路由方面(嗯,mod_rewrite),它通常与我的 .htaccess 文件有关。

您是否尝试过添加这一行

RewriteBase /

之后

RewriteEngine On

在 .htaccess 文件中?

【讨论】:

  • 不要引用这篇文章......所以让我向现有答案发放赏金。
【解决方案2】:

this GitHub issue 中描述了在 Laravel 4.2 中运行验收测试的解决方案。

codeception.yml

coverage:
    enabled: true
    remote: false
    c3_url: 'http://whatever.dev/c3.php'

routes.php

Route::get('/c3.php/{extra}', function () {
    require base_path('c3.php');
})->where('extra', '.*');

提示: 在我正在使用的验收/功能测试中,我将 Laravel 作为流程的一部分进行引导,因此我可以在有助于断言的测试中完全访问 Facades 和 IOC 容器。

$app = require __DIR__.'/../bootstrap/start.php';
$app->boot();

注意:在生成代码覆盖率时,使用require_once 将不起作用。

【讨论】:

    猜你喜欢
    • 2018-10-21
    • 2014-06-18
    • 1970-01-01
    • 2013-06-10
    • 2013-04-14
    • 2014-02-01
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多