一个类中的一个方法调用其他的方法,如何分别进行单元测试? 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());
    }

}
大多数知识,不需要我们记住,只需要认知即可
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

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