2016-08-31 15 views
0

CommentModelメソッドを擬似したいので、ApiReviewCommentsControllerメソッドで呼び出されているかどうかをテストできます。コントローラの依存クラスでメソッドを擬似するには

これは私の方法である:

class ApiReviewCommentsController extends ApiController 
{ 
    private $commentsModel; 

    public function __construct(CommentsModel $commentsModel) 
    { 
     $this->commentsModel = $commentsModel; 
     $this->commentsModel->getReviewComment(); 

    } 
} 

これは私のテストです:

public function testThatItShouldAddGetAllCommentsForReviewId(){ 


    $reviewId = 1; 


    $commentsModel = $this->getMockBuilder(CommentsModel::class)->getMock(); 

    $controller = new ApiReviewCommentsController($commentsModel); 

    $commentsModel->expects($this->once()) 
     ->method('getReviewComments') 
     ->willReturn(false); 

} 

これは私のエラーです:

期待がメソッド名に失敗しましたが、 に等しいです1回呼び出されたとき。

メソッドは1回呼び出されると予想され、実際には0回と呼ばれます。

なぜ呼び出されないのですか?

答えて

0

あなたはそれを逆にしています。

モックの期待を最初に定義してから、それをコントローラに渡して、それが呼び出されて期待通りになるようにする必要があります。

あなたのコントローラのコンストラクタによってモックが最初に呼び出されていて、決して起こらない期待値を定義しています。

関連する問題