PHPUnit имитирует конкатенированную функцию

Я пишу тест, и мне было интересно, как я могу издеваться над следующим объединенным вызовом функции:

$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)));

person Nealv    schedule 14.07.2015    source источник
comment
вы должны издеваться над всеми вызовами методов, поэтому вы должны сбросить то, что вызов метода errors() должен возвращать также издевательский объект, который в вызове метода all() возвращает пустой массив. Для полного ответа нужно указать какой фреймворк и версию вы используете, как минимум какой тип объекта возвращается при вызове метода call. Надеюсь, это поможет.   -  person Matteo    schedule 14.07.2015


Ответы (1)


Ты пытался:

Validator::shouldReceive('errors->all')
    ->once()
    ->andReturn(array());

Этот ответ также может быть актуален: https://stackoverflow.com/a/22435748/5072503

person Fredrik Salin    schedule 01.12.2015