模拟调用相同类中的另一个函数

时间:2018-11-15 12:09:50

标签: laravel unit-testing phpunit mockery

我有调用同一类中另一个函数的函数。我正在尝试测试是否在我的单元测试中调用了该方法,但是找不到模拟它的方法。

这是方法调用的示例

public function follow($user_id, $followsfeed, $target_user_id)
    {
        $news_feeds = $this->getNewsFeeds($user_id);

    }

我想模拟方法getNewsFeed并断言在执行follow时调用它。

实现此目标的最佳方法是什么。因为我无法锻炼如何创建内部模拟对象。

1 个答案:

答案 0 :(得分:3)

您可以使用partial mocks,例如在测试类中,可以执行以下操作:

public function test_follow()
{
    $mock = Mockery::mock('App\Services\SomeService')->makePartial();
    $mock->shouldReceive('getNewsFeeds')
      ->once()
      ->with("id1","id2")
      ->andReturn($someNews);
    $mock-> follow("id1","id2"); 
}

您也可以使用PHPUnit test-doubles

希望获得帮助