最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • 使用 PHPUnit 在 Laravel 中测试您的 DOM

    使用 phpunit 在 laravel 中测试您的 dom

    phpunit 开箱即用,具有 assertsee 和 assertseetext 等功能,在这两种情况下我们都可以针对特定文本进行断言,为了断言 html 标签,我们将依靠这些功能进行一些自定义工作来进一步完善它们。

    使用案例

    我需要测试某些表单是否生成 csrf 令牌。

    基本解决方案

    laravel csrf 令牌指令生成如下输入:

    <input type="hidden" name="_token" value="random_generated_token" ...>

    由于生成的令牌在请求之间发生变化,我们不会测试生成的令牌值,而是断言输入存在并具有某些所需的属性,phpunit assertsee 有第二个参数来转义值,以便我们可以做一些事情像这样:

    $this
        ->get("contact-us")
        ->assertsee([
            '<input name="some_database_column" false><h2>
      
      
      改进迭代
    </h2>
    
    <p>它可以解决我们的解决方案,但可能有更好的方法可以在更多情况下使用它,因此使用“一厢情愿”的方法编写我想要的代码将是这样的:<br></p>
    
    <pre class="brush:php;toolbar:false">$this->get("contact-us")
        ->asserthtml('input', [
            "type" => "hidden",
            "name" => "_token",
    ])
    

    这将很有用,因为它添加了一个断言,只需传递标签名称和属性数组即可在多种情况下工作

    我们可以在 laravel 中添加类似的内容,方法是向 appserviceprovider 或任何其他自定义 provider 中的 testresponse 类添加自定义宏:

    testresponse::macro('asserthtml', function ($tag, $attributes) {
        $attributes = collect($attributes)
            ->map(function ($attributevalue, $attributekey) {
                return "$attributekey="$attributevalue" ";
            })
            ->values()
            ->implode("", "");
    
            $htmlelement = "assertsee([$htmlelement], false);
    });
    

    现在我们可以通过测试标签和属性的存在来测试我们的 dom。

    立即学习PHP免费学习笔记(深入)”;

    瞄准 laravelish 方式

    在这种情况下,我们可以向前推进一点,我需要在应用程序中以多种形式断言表单作为 csrf 令牌,因此我们可以依靠我们的宏来创建更多断言,在本例中作为预期的 html 标签并且属性不会改变我可以添加这样的东西:

    testresponse::macro('assertcsrftokenexists', function () {
        $this->asserthtml('input', [
            "type" => "hidden",
            "name" => "_token",
        ]);
    });
    

    这个断言很短,可重复使用,易于阅读和使用:

    $this->get("contact-us")->assertCSRFTokenExists();
    

    对于更强大的断言,您应该考虑一个优秀的包,例如:

    辛贝克/laravel-dom-断言

    希望这有助于在您的测试中添加基本的 dom 断言

    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » 使用 PHPUnit 在 Laravel 中测试您的 DOM
    • 7会员总数(位)
    • 25846资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 293稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情