【发布时间】:2017-05-23 20:33:31
【问题描述】:
我正在尝试使用以下验证规则对我的方法进行单元测试。
$rules = [
'image_id' => 'required|exists:images,id'
];
测试
$formData = [
'title' => 'test regulatory update',
'body' => 'test body',
'image_id' => 1000,
'file_id' => 3000,
'enforce_date' => '2018-01-01',
'region_id' => 4000
];
$trans = $this->getRealTranslator();
$v = new Validator($trans, array('image_id' => 1000), array('image_id' => 'exists:images,id'));
$validatorMock = Mockery::mock('Illuminate\Validation\PresenceVerifierInterface');
$validatorMock->shouldReceive('setConnection')->once()->with(null);
$validatorMock->shouldReceive('getCount')
->once()
->with('images', 'id', 1000, null, null, [])
->andReturn(true);
$v->setPresenceVerifier($validatorMock);
$response = $this->call('POST', '/regulatory', $formData);
$statusCode = $response->getStatusCode();
$this->assertEquals(200, $statusCode);
$this->assertTrue($v->passes());
运行测试时,我收到以下错误。
testing.ERROR: 异常 'Illuminate\Foundation\Validation\ValidationException' 带有消息 '给定的数据未能通过验证。'
我的问题是,如何模拟验证以查看 1000 的图像 id 存在?
【问题讨论】:
标签: laravel validation unit-testing mocking