【问题标题】:Should something this be a unit test or something else? Using Laravel 8这应该是单元测试还是其他?使用 Laravel 8
【发布时间】:2022-01-15 05:49:05
【问题描述】:

我最近构建了一个应用程序,可将大约 4500 行数据从 Excel 导入 MongoDB 数据库。我的导入工作非常好,但现在我遇到了 GIGO 问题。

excel 电子表格有一个名为“program_url”的列,该列应该是一个外部链接。其中大约有一千个格式不正确或导致 404。 我已经设法在导入过程中修复了格式错误的 url(http:www.typt things),但是有很多只是导致 404 页面,我想测试一下。

我的问题是,在运行导入时测试 HTTP 200 状态是否更好?还是应该是单元/功能/浏览器测试的一部分?如果是后者..我该怎么做呢?

在 Dusk 测试中,我有以下代码作为测试..

    public function test_program_urls()
    {
        $programs = Program::all()->take(5);

        foreach($programs AS $program) {

            $this->browse(function (Browser $browser) use ($program) {
                $browser->visit($program->program_slug)
                    ->clickLink($program->program_name)
                    ->assertSeeLink($program->program_name);
                 

            });


        }

    }

测试/断言通过,但我看不到检查 ClickLink 状态的方法 (https://laravel.com/docs/8.x/dusk#available-assertions)

我尝试将此作为数据库测试,但断言更少..https://laravel.com/docs/8.x/database-testing#available-assertions

也许我正在回答我自己的问题.. 我应该在播种/导入期间进行测试,并在每次遇到问题时修复 Excel 工作表,或者记录所有 404 以供将来检查。

【问题讨论】:

  • 您当然可以编写一个测试来检查数据库 url 是否都导致 404,但是您不能将其称为单元测试,因为您实际上并没有测试自己的代码。这更像是数据验证,您也可以将其作为一个单独的过程进行(即在导入完成后对作业进行排队)。我不建议将其编写为单元测试,我当然不建议使用 Dusk 来检查请求是否返回 404,因为简单的 http client request 可以做到这一点并且速度更快

标签: php laravel phpunit


【解决方案1】:

如果您需要在单元测试期间检查响应代码,您可以在测试中使用 assertStatus。例如:

$response = $this->getJson($program_url);

$response->assertStatus(404);

或者使用 Http::get 并像这样检查状态。 (您可以在代码中的任何地方使用它,而不仅仅是在测试中):

$response = Http::get($program_url);
if($response->status()==404) {
........
}

或者你可以使用php函数:get_headers。你也可以在代码的任何地方使用它,它比前一个要快一点:

private function pageExists($url) {
    $headers=@get_headers($url);
    return $headers && $headers[0] != 'HTTP/1.1 404 Not Found';
}

你可以像这样使用这个方法:

if($this->pageExists($program_url)) {
  .........
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-19
    • 2014-09-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 2011-01-29
    相关资源
    最近更新 更多