PHPUnit说我没有传递参数给父类方法.我是


PHPUnit says im not passing argument to parent class method. I am

我有一个扩展抽象父类的测试类。父类继承了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 ) ) );
}

我得到错误

参数1传递给BaseRuleTest::testNullDataDoesntValidate()必须是Validator'Rule的一个实例,none given

它说None是给定的,但是它被给定了。我可以进入儿童功能和var_dump( $rule )并查看数据,它肯定在那里。

这是父方法

中的var_dump
object(Validator'Rule'Between)#210 (2) {
  ["min_value":protected]=>
  int(1)
  ["max_value":protected]=>
  int(10)
}

我认为这与phpunit的工作方式有关。我是phpunit新手。

任何想法?

尝试将testNullDataDoesntValidate重命名为不以test开头的东西。

实际测试的函数以单词"test"开头。详见:http://www.phpunit.de/manual/3.6/en/writing-tests-for-phpunit.html

因为这使它们成为实际测试,所以phpunit调用它时不带参数。

传递给BaseRuleTest::testNullDataDoesntValidate()的参数1必须是Validator'Rule的一个实例,none given

这个错误来自PHPUnit试图调用test方法,而不是来自你的代码调用该方法。

如果您包含了堆栈跟踪(安装xdebug以始终看到它),那将是显而易见的。