jeudi 19 juillet 2018

PHPunit: Can I mock class that I test?

I have a class like this:

<?php
class Apple { 
    public function foo($arg1){
        if ($arg1 == 0){
            $this->bar($arg1);
        }
    }

    public function bar($arg){
        //do something
    }
}

And I have a unit test like this:

class AppleTest extends TestCase{
    /**
     * it's unit test for method Apple::foo
     */
    public function testFoo(){
        $mock = $this->getMockBuilder('Apple')
            ->setMethods(['bar'])
            ->getMock();

        $mock->expects($this->once())
            ->method('bar')
            ->with($this->equalTo(0));

        $mock->foo(0);
    }
}

I was told, that I can't use a mock for the class that is being tested. I was told that I should use instance of the class instead of its mock, because when I use mock it's not actual testing. Can some one argue with that.

Aucun commentaire:

Enregistrer un commentaire