ssddanbrown / asserthtml
PHPUnit的HTML内容断言
v3.0.0
2023-05-11 14:26 UTC
Requires
- php: >=8.1
- ext-dom: *
- ext-json: *
- phpunit/phpunit: ^10.0
- symfony/css-selector: ^6.0
- symfony/dom-crawler: ^6.0
Requires (Dev)
- phpstan/phpstan: ^1.10
README
简介
此包提供了一组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项目中借用的,因此也受他们的许可证约束。