switch($value){
is_int($value) == 1:
$this->assertInternalType('int', $value);
break;
is_string($value) == 1:
$this->assertInternalType('string', $value);
break;
empty($value):
$this->assertNull($value);
default:
throw new exception('Value should be either a string, integer or NULL');
}
You would want to replace the thrown exception with the PHPUnit method that can manually add a failure. Something like this should work.
I use SimpleTest and it has such an assertion; although the way you have written it is OK as it does test the value and should fail if it is neither of your two filtered types.
I am also using phpunit. I’m a little new and have run into a tough problem.
I am testing a function in a class whose constructor I absolutely have to disable because it news up an object that I can’t access from the test. So, I use the code:
public function testConnect(){
$mock = $this->getMockBuilder('FSCall')
->setMethods(array('setOpened'))
->disableAutoload()
->disableOriginalConstructor()
->getMock();
$call = new FSCall;
$call->connect();
}
…where ‘setOpened’ is a local function that function connect calls, but I don’t need it to actually call the function for the unit test.
The problem is that phpUnit returns the error “Call to undefined method FSCall::connect()”. The function is in the FSCall class. Now I can “fix” the error by doing a…
$mock->expects($this->any())->method('connects')
…but then the connects function doesn’t actually get called.