【发布时间】: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 可以做到这一点并且速度更快