我正在尝试为我的下面的类/方法做一些测试用例:
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".
。
我无法为此找到解决方案或如何成功为上述类编写测试。请指导我这个。感谢。
答案 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));