【问题标题】:Mock out function call to another function in same class模拟对同一类中另一个函数的函数调用
【发布时间】:2019-04-18 12:59:08
【问题描述】:

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

这里是一个方法调用的例子

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

    }

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

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

【问题讨论】:

    标签: laravel unit-testing phpunit mockery


    【解决方案1】:

    你可以使用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

    希望有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-05
      • 2021-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-21
      相关资源
      最近更新 更多