【问题标题】:Is there a way of formatting failed output from Laravel's assertSee() test?有没有办法格式化 Laravel 的 assertSee() 测试的失败输出?
【发布时间】:2022-04-18 19:29:45
【问题描述】:

Laravel 有几个内置的断言允许你从请求中查询响应。

    public function testWebpage()
    {
        $response = $this->get('/important-page')
            ->assertStatus(200)
            ->assertViewIs('page')
            ->assertSee('This is a page')
            ->assertSee('login');
    }

这很好,除非assertSee 失败,它会转储一个标准的 PHPUnit 错误——类似于...

1) Tests\PageTest::testWebpage
Failed asserting that '<!DOCTYPE html>\n
<!--[if IE 8]><html class="ie8" lang=""><![endif]-->\n
<!--[if IE 9]><html class="ie9" lang=""><![endif]-->\n
<html lang="en">\n
<!--<![endif]-->\n
<!-- start: HEAD -->\n
<head>\n
...

[Insert 500 lines of HTML here]
...

</body>\n
</html>\n
' contains "This is a page".

是否有合理的解决方案来输出失败的文本以使其有用?我可以指定一个粗略的上下文(可能是div#welcome)来区分而不是整个文件吗?我可以选择输出到文件以在控制台之外进行检查吗?我可以获得某种可折叠的输出吗?我可以捕获 PHPUnit 失败的断言并将输出修剪为 20 行吗?

这不仅破坏了调试这一测试的便利性——如果assertSee() 还产生另外 20 个错误,则难以定位其他故障。

【问题讨论】:

    标签: laravel unit-testing phpunit


    【解决方案1】:

    我想知道同样的事情,但我发现的唯一事情就是输出到一个文件。

    语法是:

    --log-junit file.txt
    

    【讨论】:

    • 这肯定会让事情变得更有用!
    猜你喜欢
    • 1970-01-01
    • 2019-08-27
    • 2018-10-27
    • 2022-11-21
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    相关资源
    最近更新 更多