ssddanbrown/asserthtml

PHPUnit的HTML内容断言

v3.0.0 2023-05-11 14:26 UTC

This package is auto-updated.

Last update: 2024-08-26 10:38:10 UTC


README

phpunit Latest Stable Version Total Downloads

简介

此包提供了一组PHPUnit断言,用于测试HTML内容。它深受Laravel的browser-kit-testing包的启发,并使用其中的代码。

安装

您可以通过composer安装此包

composer require ssddanbrown/asserthtml

使用方法

use Ssddanbrown\AssertHtml\HtmlTest;

// Create an HtmlTest instance with html content
$html = new HtmlTest('<p>Hello</p>');

// Make assertions against the instance
$html->assertElementContains('p', 'Hello');

可用方法

断言方法

$html->assertElementExists(string $selector, array $attributes = []): self
$html->assertElementNotExists(string $selector, array $attributes = []): self
$html->assertElementCount(string $selector, int $count): self
$html->assertElementContains(string $selector, string $text): self
$html->assertElementNotContains(string $selector, string $text): self
$html->assertLinkExists(string $url, string $text = null): self
$html->assertLinkNotExists(string $url, string $text = null): self
$html->assertFieldHasValue(string $fieldNameOrId, string $expected): self
$html->assertFieldNotHasValue(string $fieldNameOrId, string $value): self
$html->assertFieldHasSelected(string $fieldNameOrId, string $value): self
$html->assertFieldNotHasSelected(string $fieldNameOrId, string $value): self
$html->assertCheckboxChecked(string $inputNameOrId): self
$html->assertCheckboxNotChecked(string $inputNameOrId): self

辅助方法

$html->getOuterHtml(?string $selector = null): string
$html->getInnerHtml(string $selector): string

Laravel使用

包括一个简单的特质,以便在Laravel项目中更易于使用。在您的base TestCase类或特定测试类文件中使用该特质,并通过传递任何TestResponse$this->withHtml($response);来访问。

添加特质

<?php
...
use Ssddanbrown\AssertHtml\TestsHtml;
...
abstract class TestCase extends BaseTestCase
{
    ...
    use TestsHtml;
    ...
}

进行断言

<?php

class HtmlTest extends TestCase
{
    public function test_login_has_header()
    {
        $response = $this->get('/login');
        $this->withHtml($response)->assertElementContains('h1#title', 'Login to my app!');
    }
}

开发

Psalm被用于静态分析。可以像这样运行

vendor/bin/phpstan

PHPUnit被用于测试。可以像这样运行

./vendor/bin/phpunit

低维护项目

这是一个低维护项目。功能和支持的范围被有意保持狭窄,以满足我的需求,以确保长期维护的可行性。我根本不打算将其发展成为更大的项目。

对于错误的报告和PR是完全可以接受的,前提是不会显著增加项目的范围。请不要为重要新功能打开PR。

许可证

本项目采用MIT许可证。有关更多信息,请参阅许可证文件

此项目中使用的许多逻辑都是从laravel/browser-kit-testing项目中借用的,因此也受他们的许可证约束。