2016-11-18 7 views
1

Ich habe diesen Code in meinem PHPUnit-Test und es versucht, eine Tabelleneinheit zu verspotten. Aber wenn ich versuche, es zu laufen, erhalte ich diesen Fehler.Mock-Objekt in PHPUnit wird nicht aufgerufen

Erwartung für Methodenname ist gleich , wenn 1 Mal (s) aufgerufen. Methode wurde erwartet, dass 1 Mal aufgerufen wird, tatsächlich 0 Mal aufgerufen.

public function testFetchSingleById() 
{ 
    $mockJobTable = $this->getMockBuilder('Job\Table\JobTable') 
     ->disableOriginalConstructor() 
     ->setMethods(['fetchSingleById']) 
     ->getMock(); 

    $firstDateRun = new \DateTime('2016-06-03'); 
    $firstDateRun = $firstDateRun->format('Y-m-d H:i:s'); 

    $job = new JobEntity(); 
    $job->exchangeArray([ 
     'id' => 1, 
     'name' => 'parse', 
     'params' => '--dry-run', 
     'setFirstDateRun' => $firstDateRun, 
     'period' => '* * * * *' 
    ]); 

    $mockJobTable->expects($this->once()) 
       ->method('fetchSingleById') 
       ->with(1) 
       ->will($this->returnValue($job)); 
} 

Methode, die ich testen bin:

class JobTable extends TableGateway implements JobTableInterface 
{ 
    public function __construct(Adapter $adapter, JobEntity $entity) 
    { 
     $resultSet = new ResultSet(); 
     $resultSet->setArrayObjectPrototype($entity); 
     parent::__construct('job', $adapter, null, $resultSet); 
    } 

    public function fetchSingleById($id) 
    { 
     $select = $this->getSql()->select(); 
     $select->where->equalTo('id', $id); 
     return $this->selectWith($select)->current(); 
    } 
} 

ich ZF3 verwende.

Ich vermisse etwas, aber ich weiß nicht was.

+0

teilen Sie bitte alle Test-Code und die zu testende Methode – Matteo

Antwort

1

Der Code erstellt eine Erwartung und macht dann nichts damit. Es muss etwas geben, das fetchSingleById auf dem Mock-Objekt aufruft. Auch vom Namen des Tests sieht es so aus, als würde es sich über die Methode lustig machen, die es testen soll. Sie müssen PHPUnit nicht in einem Testfall testen, der nicht Teil von PHPUnit ist.