【问题标题】:How do I Mock Methods in a Dependency Class of a Controller如何在控制器的依赖类中模拟方法
【发布时间】:2017-01-08 01:51:10
【问题描述】:

我想模拟CommentModelgetReviews 方法,以便测试它是否在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次。

请问为什么没有调用该方法?

【问题讨论】:

    标签: php unit-testing laravel-4 mocking phpunit


    【解决方案1】:

    你在倒退。

    您需要先定义模拟的期望,然后将其传递给您的控制器,以便调用它并满足期望。

    控制器的构造函数首先调用你的模拟,然后定义一个永远不会发生的期望被调用。

    【讨论】:

      猜你喜欢
      • 2015-10-21
      • 1970-01-01
      • 2020-06-06
      • 2020-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-16
      • 2015-03-20
      相关资源
      最近更新 更多