Laravel 测试:检查页面上是否存在具有特定值的单选输入
Laravel testing: check if a radio input with a specific value exists on a page
所以我正在为我正在为客户开发的应用程序编写一些集成测试。他们有一个设计师要在 HTML 上工作,所以我们的测试有检查 link 是否存在,检查无线电组是否具有我们期望的所有值等(这是为了在设计师给我们修改后,我们可以通过测试确定他没有错误地更改一些他不应该更改的东西。
假设我们有 gender 的无线电输入,我们想检查输入值 male 和 female 存在所以很自然地我写了这样的东西:
$this->visit('/auth/register')
->select('male', 'sex');
..如果没有名称为 'sex' 且值为 'male' 的无线电输入,预计此操作会失败。所以查看 Laravel 源代码,我发现这不是 ->select() 背后的哲学,它只是将一个值存储到某个内部 $inputs
变量,这意味着这也会失败:
$this->visit('/auth/register')
->select('male', 'sex');
->seeIsSelected('sex', 'male');
问题是有没有办法使用 运行 这种测试的内置功能,我想达到 ->select($value, $option)
的预期用途,如果在视图中没有收音机或 select 输入是否带有 $value 和 $option 的组合?
PS:我知道,并且作为最后的手段,->see("type='radio' value='male')
方法
默认断言中似乎没有办法做到这一点。功能最接近的是 seeInField()
和 seeIsSelected()
,但它们并不完全符合我的要求。一种解决方案(可以根据您的断言口味进行编辑)是:
$this->assertCount(1, $this->visit('/auth/register')
->crawler->filter('input[name="sex"][value="female"]'));
另一个解决方案是自定义断言,就像 Joshua Pendo 建议的那样。
所以我正在为我正在为客户开发的应用程序编写一些集成测试。他们有一个设计师要在 HTML 上工作,所以我们的测试有检查 link 是否存在,检查无线电组是否具有我们期望的所有值等(这是为了在设计师给我们修改后,我们可以通过测试确定他没有错误地更改一些他不应该更改的东西。
假设我们有 gender 的无线电输入,我们想检查输入值 male 和 female 存在所以很自然地我写了这样的东西:
$this->visit('/auth/register')
->select('male', 'sex');
..如果没有名称为 'sex' 且值为 'male' 的无线电输入,预计此操作会失败。所以查看 Laravel 源代码,我发现这不是 ->select() 背后的哲学,它只是将一个值存储到某个内部 $inputs
变量,这意味着这也会失败:
$this->visit('/auth/register')
->select('male', 'sex');
->seeIsSelected('sex', 'male');
问题是有没有办法使用 运行 这种测试的内置功能,我想达到 ->select($value, $option)
的预期用途,如果在视图中没有收音机或 select 输入是否带有 $value 和 $option 的组合?
PS:我知道,并且作为最后的手段,->see("type='radio' value='male')
方法
默认断言中似乎没有办法做到这一点。功能最接近的是 seeInField()
和 seeIsSelected()
,但它们并不完全符合我的要求。一种解决方案(可以根据您的断言口味进行编辑)是:
$this->assertCount(1, $this->visit('/auth/register')
->crawler->filter('input[name="sex"][value="female"]'));
另一个解决方案是自定义断言,就像 Joshua Pendo 建议的那样。