wmde / hamcrest-html-matchers
一组用于HTML断言的Hamcrest匹配器
v1.0.0
2021-03-22 09:32 UTC
Requires
- php: >=7.2
- ext-dom: *
- ext-libxml: *
- ext-mbstring: *
- hamcrest/hamcrest-php: ^2.0.1
Requires (Dev)
- v1.0.0
- dev-master / 0.1.x-dev
- v0.1.1
- v0.1.0
- dev-dependabot/github_actions/actions/checkout-3.1.0
- dev-dependabot/composer/mediawiki/mediawiki-codesniffer-39.0.0
- dev-dependabot/composer/php-parallel-lint/php-parallel-lint-1.3.2
- dev-dependabot/composer/php-parallel-lint/php-console-highlighter-1.0.0
- dev-dependabot/composer/mediawiki/mediawiki-phan-config-0.11.1
- dev-denormalization
- dev-contains-string-ignoring-white-space
This package is auto-updated.
Last update: 2024-09-06 02:56:13 UTC
README
用法示例
Hamcrest 允许您创建复杂且灵活的断言。只需记住
"你可以"并不意味着"你应该"。
以下示例展示了如何确保有一个HTML表单,并且其中输入的密码不是弱密码
$html = '<div> <form> <input name="password" value="strong password"/> </form> </div>'; assertThat($html, is(htmlPiece( havingChild( both(withTagName('form')) ->andAlso( havingDirectChild( allOf( withTagName('input'), withAttribute('name')->havingValue('password'), withAttribute('value')->havingValue(not('weak password')))))))));
用法限制
- 每个HTML断言都从
htmlPiece()
调用开始(可以使用is()
来提高可读性) - 需要将
havingRootElement()
、havingDirectChild()
或havingChild()
之一作为参数传递给htmlPiece()
文档
有关Hamcrest通用使用的信息可以在Hamcrest GitHub仓库找到。
可用匹配器
-
htmlPiece()
- 检查字符串是否是有效的HTML,解析它并在存在的情况下传递给给定的匹配器assertThat('<p></p>', is(htmlPiece())); // Just checking that string is a valid piece of HTML
-
havingRootElement
- 检查给定的约束与HTML的根元素。 注意:只能传递给htmlPiece()
assertThat('<p></p>', htmlPiece(havingRootElement(withTagName('p'))));
-
havingDirectChild
- 检查给定的约束与直接子元素assertThat('<p><b></b></p>', htmlPiece(havingRootElement(havingDirectChild(withTagName('b')))));
-
havingChild
- 检查给定的约束与所有子元素assertThat('<p><b></b></p>', htmlPiece(havingChild(withTagName('b'))));
-
withTagName
- 检查给定的约束与标签名assertThat('<p><b></b></p>', htmlPiece(havingChild(withTagName( either(equalTo('i'))->orElse(equalTo('b')) ))));
-
withAttribute
- 检查给定的约束与元素属性的比较(比较名称和值)assertThat('<p><input required></p>', htmlPiece(havingChild(withAttribute('required'))));
assertThat('<p><input data-value="some data"></p>', htmlPiece(havingChild( withAttribute(startsWith('data-'))->havingValue('some data'))));
-
withClass
- 检查给定的约束与元素的类列表assertThat('<p class="class1 class2 class3"></p>', htmlPiece(havingChild( withClass('class2'))));
-
havingTextContents
- 检查给定的约束与元素的文本内容assertThat('<div><p>this is Some Text</p></div>', htmlPiece(havingChild( havingTextContents(containsString('some text')->ignoringCase()))));
-
tagMatchingOutline
- 宽容地检查标签是否与给定的 大纲 匹配(大纲 - HTML格式中的标签表示)这意味着
- 元素的标签名等于大纲的标签名
- 元素具有与大纲相同的属性及其值。如果元素具有比大纲更多的属性,它仍然匹配。
- 注意: 属性
class
以不同的方式处理(见下文)。 - 注意: 如果属性大纲是布尔值,则不会检查元素中的值,只需检查是否存在。
- 注意: 属性
- 元素具有与大纲相同的所有HTML类。
这将通过
assertThat('<form><input id="id-pass" name="password" class="pretty green" required="required"></form>', htmlPiece(havingChild( tagMatchingOutline('<input name="password" class="green" required>') )));