一个类中的一个方法调用其他的方法,如何分别进行单元测试? mock 可行吗?

如下代码

class A
{
        public function demo()
        {
             $demo2 = $this->demo2();
             $demo3 = $this->demo3();

             return $demo2 + $demo3;
        }

        public function demo2()
        {
             // ....
        }
        public function demo3()
        {
             // ....
        }
}

mock 可以模拟一个类中的方法,这样可以用来方便的测试另外一个类的方法,但是相互调用的两个方法在一个类中,有没有比较好的办法呢?

已经在 stackoverflow 找到 答案 ,好像自己在做广告:stuck_out_tongue_closed_eyes:

<?php

class User {

    public function years()
    {
        return floor($this->months() / 12);
    }

    public function months()
    {
        // Database call or anything else, it's a black box !
    }

}

class UserTest extends TestCase {

    public function testYearsReturnTheNumberOfYears() 
    {
        $user = \Mockery::mock('User[months]');
        $user->shouldReceive('months')->andReturn(18);

        assertEquals(1, $user->years());
    }

}
大多数知识,不需要我们记住,只需要认知即可
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!