【发布时间】:2015-10-03 01:34:59
【问题描述】:
我正在编写一些测试,我想知道如何模拟下一个连接的函数调用:
$validator->errors()->all()
我不需要错误集合,因为我希望它是空的,这样$this->logerror 就不会被调用。
是否可以一次调用模拟$validator->errors()->all()?
类似
Validator::shouldReceive('errors()->all()')
->once()
->andReturn(array());
Code:
// CLASS
$validator = Validator::make(
['participant' => $participant'],
$programValidator->getRules()
);
if($validator->fails()) {
foreach($validator->errors()->all() as $error) {
$this->logError($record, $error);
}
// TEST
Validator::shouldReceive('make')
->once()
->andReturn(Mockery::mock(array('fails' => true)));
【问题讨论】:
-
你必须模拟所有的方法调用,所以你必须弄清对方法
errors()的调用应该返回一个同样模拟的对象,在all()方法调用中返回一个空数组。要获得完整的答案,您需要指定您使用的框架和版本,至少在调用 call 方法时返回的对象类型。希望对您有所帮助。
标签: unit-testing phpunit mockery