首页 > 解决方案 > 模拟对同一类中另一个函数的函数调用

问题描述

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

这是方法调用的示例

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

    }

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

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

标签: laravelunit-testingphpunitmockery

解决方案


您可以使用部分 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 测试替身

希望这有帮助


推荐阅读