PHPUnit:null与期望类型“数组”不匹配

时间:2017-11-16 06:32:37

标签: php phpunit

我正在尝试为我的下面的类/方法做一些测试用例:

class ChildClass extends BaseClass {

    /*
    Params:
        $a is of type STRING
        $b is of type ARRAY
    */
    function MethodOne($a, $b)
    {
        $c = array();

        $c[0] = $a;
        $c[1] = $b;

        return $c;
    }
}

这是我编写的PHPUnit( Version5.7.25 )测试用例:

class ChildClassTest extends PHPUnit_Framework_TestCase 
{    
    public function testMethodOne()
    {
        $a = 'Hello';
        $b = array('World!', 'Welt!', 'Mondo!');

        $desired_response = array('Hello', array('World!', 'Welt!', 'Mondo!'));

        $stub = $this->getMockBuilder('ChildClass')
                        ->setMethods(array('MethodOne'))
                        ->getMock();

        $actual_response = $stub->MethodOne($a, $b);

        $this->assertEquals($desired_response, $actual_response);
    }
}

现在,每当我进行测试时,我都会失败地说null does not match expected type "array".

我无法为此找到解决方案或如何成功为上述类编写测试。请指导我这个。感谢。

1 个答案:

答案 0 :(得分:0)

你正在测试被测试的课程。为了测试类,您必须从测试中执行该类:

class ChildClassTest extends PHPUnit_Framework_TestCase 
{    
    public function testMethodOne()
    {
        $a = 'Hello';
        $b = array('World!', 'Welt!', 'Mondo!');

        $desired_response = array('Hello', array('World!', 'Welt!', 'Mondo!'));

        $classUnderTest = new ChildClass();

        $actual_response = $classUnderTest->MethodOne($a, $b);

        $this->assertEquals($desired_response, $actual_response);
    }
}

无论如何,如果你只是想从类中测试存根,你必须配置该存根以返回

的答案
$stub->method('MethodOne')
       ->will($this->returnValue($desired_response));