Reputation: 30180
I have a test class that extends an abstract parent class. The parent class extends PHPUnit_Framework_TestCase
, it defines some methods that all tests will use.
I'm having an issue calling the parents methods. Phpunit is saying that i'm not providing any arguments to the method but i am.
Here is the child's method
public function testEmptyGarbageNullDataDoesntValidate() {
$rule = new Rule\Between( 1, 10 );
$this->testNullDataDoesntValidate( $rule );
// $this->testEmptyDataDoesntValidate( $rule );
// $this->testGarbageDataDoesntValidate( $rule );
}
Here's the parent method
public function testNullDataDoesntValidate( \Validator\Rule $rule ) {
$this->validator->addRule( 'null', $rule );
$this->assertFalse( $this->validator->validate( array( 'null' => null ) ) );
}
I'm getting the error
Argument 1 passed to BaseRuleTest::testNullDataDoesntValidate() must be an instance of Validator\Rule, none given
It's saying None is given, but its being given. I can go into the child's function and var_dump( $rule )
and see the data, it's definitely there.
Here's the var_dump
from within the parent method
object(Validator\Rule\Between)#210 (2) {
["min_value":protected]=>
int(1)
["max_value":protected]=>
int(10)
}
I'm assuming it has something to do with the way phpunit works. I'm new to phpunit.
Any ideas?
Upvotes: 0
Views: 469
Reputation: 31147
Argument 1 passed to BaseRuleTest::testNullDataDoesntValidate() must be an instance of Validator\Rule, none given
That errors is coming from PHPUnit trying to call that test method, not from your code calling that method.
If you had included the stack trace (install xdebug to always see it), that would have been obvious.
Upvotes: 2
Reputation: 3996
Try renaming testNullDataDoesntValidate
to something that doesn't start with test
.
Functions that are actual tests begin with the word "test". See here: http://www.phpunit.de/manual/3.6/en/writing-tests-for-phpunit.html
Because that makes them actual tests, phpunit calls it without arguments.
Upvotes: 3