【发布时间】:2016-03-04 19:24:07
【问题描述】:
当尝试调用press() 方法时,我总是得到
InvalidArgumentException:无法访问的字段“”
在那一行。
根据文档:
“按下”具有给定文本或名称的按钮。
我的方法:
press('Create')
我的按钮是
<button class="btn btn-lg btn-primary" type="submit" name="submit">Create</button>
我也尝试使用name 获得相同的结果。
我也尝试过submitForm('Create'),它可以工作,但是seeInDatabase('employees', ['email' => 'john@email.com']) 总是失败。
无法在数据库表 [employees] 中找到与属性 [{"email":"john@email.com"}] 匹配的行。
这是我的完整方法
public function testExample()
{
$this->actingAs(\App\Employee::where('username', 'grant')->first())
->visit('/employees/create')
->type('john', 'username')
->type('1234', 'password')
->type('john@email.com', 'email')
->submitForm('Create')
->seeInDatabase('employees', ['email' => 'john@email.com'])
->see('Employee Directory');
}
更新 1
这是我的表格:
{!! Form::open(['route' => 'employees.store', 'method' => 'POST']) !!}
@include('employees.form')
{!! Form::close() !!}
如您所见,我的字段不可能在表单之外。
【问题讨论】:
-
我遇到了类似的问题。这可能与客户端验证失败有关。
-
我认为这与按钮无关,而是与表单中提交的其他字段有关。 "" 表明它可能与具有数组名称的输入有关(例如 name="email[]")。您可以发布您的表格样本吗?
-
如果您的输入具有 WebSpanner 规定的数组名称,您可以为输入提供一个与名称相同但没有数组声明的 id,并在 PHPUnit 中引用不带括号的输入。这应该可以解决您的问题并允许 PHPUnit 看到提交按钮。
标签: php laravel testing phpunit laravel-5.1