Laravel视图测试assertSee因HTML空格失败,如何忽略空格?
解决Laravel视图测试中HTML空格导致断言失败的问题
方法1:使用正则匹配(assertSeePattern)
直接用正则表达式匹配,把预期字符串中的空格替换成可匹配任意空白字符(包括换行、制表符、连续空格)的\s+,就能忽略渲染后HTML里的多余空白。
示例代码:
$this->view->assertSeePattern('/<a\s+href="\/customer\/member\/delete\/1"\s+class="btn btn-secondary delete-button"\s*>Delete<\/a>/');
注意转义正则里的特殊字符,比如斜杠/要加反斜杠转义。
方法2:统一去除多余空白后断言
把视图渲染的内容和预期字符串都处理成“压缩”格式——去掉所有多余空白(换行、连续空格),只保留单个空格,再进行断言。
示例代码:
// 处理视图输出 $rendered = preg_replace('/\s+/', ' ', trim($this->view->render())); // 处理预期字符串 $expected = preg_replace('/\s+/', ' ', trim('<a href="/customer/member/delete/1" class="btn btn-secondary delete-button">Delete</a>')); $this->assertEquals($expected, $rendered);
方法3:检查关键内容的顺序(assertSeeInOrder)
如果不需要精确匹配整个HTML标签,只需要确认按钮的关键部分存在且顺序正确,可以用assertSeeInOrder,分别传入href值、class值、按钮文本,不管中间有多少空格都不影响。
示例代码:
$this->view->assertSeeInOrder([ '/customer/member/delete/1', 'btn btn-secondary delete-button', 'Delete' ]);
内容的提问来源于stack exchange,提问作者Daevne
相关产品推荐
相关产品推荐

