Laravel测试:检查页面上是否存在具有特定值的无线电输入

时间:2016-02-07 06:18:34

标签: php laravel laravel-5.2

所以我正在为我正在为客户工作的应用程序编写一些集成测试。他们有一个设计师会在HTML上工作,所以我们的测试会检查链接是否存在,检查一个广播组是否具有我们期望拥有的所有值等等(这是设计师给出的结果)我们编辑,我们可以通过测试确保他没有错误地改变他不应该改变的一些事情。

所以说我们有性别的广播输入,我们想要检查输入值男性女性是否存在所以我自然而然地写了这样的话:

$inputs

..如果没有名称'性别'的无线电输入,则期望失败。有价值的男性'。因此,看看Laravel源代码,我发现它不是背后的哲学 - > select(),它只是将值存储到某个内部$this->visit('/auth/register') ->select('male', 'sex'); ->seeIsSelected('sex', 'male'); 变量,这意味着它也会失败:

->select($value, $option)

问题是有没有办法使用内置的功能来运行这样的测试,我想到达->see("type='radio' value='male')的预期用途,如果在视图中没有收音机或者它将会失败选择$ value和$ option组合的输入?

PS:我知道并且作为最后的手段,{{1}}方法

1 个答案:

答案 0 :(得分:1)

似乎在默认断言中没有一种方法可以做到这一点。功能最接近的是seeInField()& seeIsSelected()但他们并没有完全按照我的意愿行事。一个解决方案(可以根据您的断言口味进行编辑)是:

$this->assertCount(1, $this->visit('/auth/register')
    ->crawler->filter('input[name="sex"][value="female"]'));

另一个解决方案是Joshua Pendo建议的自定义断言。