2016-11-18 1 views
1

PHPUnitテストでこのコードを使用していますが、テーブルエンティティをモックしようとしています。しかし、私はそれを実行しようとすると、私はこのエラーが発生します。PHPUnitのMockオブジェクトが呼び出されない

メソッド名の期待値は、1回呼び出すと に等しくなります。メソッドは が実際に0回呼び出された1回呼び出されると予想されました。私がテストしてい

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

方法:私はZF3を使用しています

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(); 
    } 
} 

私は何かが不足していますが、何がわかりません。

+0

すべてのテストコードとテスト中のメソッドを共有してください – Matteo

答えて

1

コードは期待値を設定してから何もしません。モックオブジェクト上で実際にfetchSingleByIdを呼び出す何かが存在する必要があります。また、テストの名前から、テストするはずのメソッドを嘲笑しているように見えます。 PHPUnit自体に含まれていないテストケースでPHPUnitをテストする必要はありません。

関連する問題