0

我有一个扩展抽象父类的测试类。父类 extends 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父方法中的 from

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

我假设它与 phpunit 的工作方式有关。我是phpunit的新手。

有任何想法吗?

4

2 回答 2

3

尝试重命名testNullDataDoesntValidate为不以test.

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

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

于 2013-03-20T14:35:09.640 回答
2

传递给 BaseRuleTest::testNullDataDoesntValidate() 的参数 1 必须是 Validator\Rule 的实例,没有给出

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

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

于 2013-03-20T14:40:20.607 回答