星期五, 6月 09, 2017

讓Stub跑原本的Code

本來Stubbing寫好好的,遇到要call stub裡未stubbing的method
一時還不知道怎麼寫,因為會遇到undefined mock function
原來直接用getMockBuilder就可以了
class aaa {
  public function test1(){return true;}
  public function test2(){return true;}
}

class StubTest extends PHPUnit_Framework_TestCase
{
  public function testStub()
  {
      $stub = $this->getMockBuilder('aaa')
        ->setMethods(array('test1'))
        ->getMock();

      $stub->expects($this->any())
        ->method('test1')
        ->will($this->returnValue(false));

        $this->assertFalse($stub->test1());
        $this->assertTrue($stub->test2());
  }
}

加上Namespace後,getMockBuilder裡的class,要加完整的namepspace才會真的取到, 不然會做個假的(test2會是undefined function)