我有一个扩展抽象父类的测试类。父类扩展PHPUnit_Framework_TestCase
,它定义了所有测试将使用的一些方法。
我在调用父母方法时遇到问题。 Phpunit说我没有提供任何参数,但我是。
这是孩子的方法
public function testEmptyGarbageNullDataDoesntValidate() {
$rule = new Rule\Between( 1, 10 );
$this->testNullDataDoesntValidate( $rule );
// $this->testEmptyDataDoesntValidate( $rule );
// $this->testGarbageDataDoesntValidate( $rule );
}
这是父方法
public function testNullDataDoesntValidate( \Validator\Rule $rule ) {
$this->validator->addRule( 'null', $rule );
$this->assertFalse( $this->validator->validate( array( 'null' => null ) ) );
}
我收到了错误
传递给BaseRuleTest :: testNullDataDoesntValidate()的参数1必须 是Validator \ Rule的实例,没有给出
这是说没有给出,但是给出了它。我可以进入孩子的函数和var_dump( $rule )
并查看数据,它肯定存在。
这是父方法
中的var_dump
object(Validator\Rule\Between)#210 (2) {
["min_value":protected]=>
int(1)
["max_value":protected]=>
int(10)
}
我认为它与phpunit的工作方式有关。我是phpunit的新手。
有什么想法吗?
答案 0 :(得分:3)
尝试将testNullDataDoesntValidate
重命名为不以test
开头的内容。
实际测试的函数以" test"开头。见这里:http://www.phpunit.de/manual/3.6/en/writing-tests-for-phpunit.html
因为这使它们成为实际测试,所以phpunit不带参数调用它。
答案 1 :(得分:2)
传递给BaseRuleTest的参数1 :: testNullDataDoesntValidate()必须是Validator \ Rule的实例,没有给出
错误来自PHPUnit尝试调用 test 方法,而不是来自调用该方法的代码。
如果你已经包含了堆栈跟踪(安装xdebug以便始终看到它),那就很明显了。