savvywombat/laravel-assert-selector-contains

使用CSS选择器表达式进行目标内容断言

1.3.1 2023-11-23 06:55 UTC

This package is auto-updated.

Last update: 2024-09-23 10:54:48 UTC


README

Latest Version on Packagist Supported PHP Version Software License Build Code Coverage

使用CSS选择器表达式进行目标内容断言。

Laravel的内置assertSee很有用,但有一些限制

  1. 它会将字符串与整个文档进行匹配,可能会产生假阳性。
  2. 很难断言特定项目是否设置正确(页面标题、输入标签等)
  3. 当断言失败时,它会在控制台输出整个HTML文档。

此包提供了一组额外的断言,这些断言可在Laravel的TestResponse上使用,以帮助针对特定元素/属性并在失败时改进消息。

assertSelectorExists($selector)
assertSelectorDoesNotExist($selector)

assertSelectorContains($selector, $value)
assertSelectorDoesNotContain($selector, $value)

assertSelectorAttributeExists($selector, $attribute)
assertSelectorAttributeDoesNotExist($selector, $attribute)

assertSelectorAttributeEquals($selector, $attribute, $value)
assertSelectorAttributeDoesNotEqual($selector, $attribute, $value)

assertSelectorAttributeContains($selector, $attribute, $value)
assertSelectorAttributeDoesNotContain($selector, $attribute, $value)

因此,如果您想确保文档标题设置正确

$response->assertSelectorContains('title', 'Welcome');

如果您想断言为特定表单输入设置了标签

$response->assertSelectorExists('label[for=input-id]');

或者如果特定输入已经设置了正确的初始值

$response->assertSelectorAttributeEquals('input[name=display_name]', 'value', 'SavvyWombat');

安装

此包可通过Composer使用。

composer require --dev savvywombat/laravel-assert-selector-contains

用法

namespace Tests\Feature;

use SavvyWombat\LaravelAssertSelectorContains\AssertsWithSelectors;
use Tests\TestCase;

class ExampleTest extends TestCase
{
  use AssertsWithSelectors;

  public function testDocumentTitleIsCorrect(): void
  {
    $response = $this->get('/');
    
    $response->assertSelectorContains('title', 'Welcome');
  }
}

致谢

本包受到Liam Hammett博客文章的启发

Laravel测试CSS选择器断言宏

支持

请使用GitHub问题跟踪器报告问题。您也可以fork仓库并提交pull request。

许可证

本包根据MIT许可证(MIT)授权。