You can use the logicalAnd
expression:
$test->expects ($this->once()) ->method ('increaseValue') ->with ($this->logicalAnd($this->greaterThan(0), $this->lessThan(10))) ->will ($this->returnValue (null));
A list of possible functions checks functions in: PHPUnit/Framework/Assert.php
that do not start with "assert"
Full example
<?php class mockMe { public function increaseValue($x) { } } class fooTest extends PHPUnit_Framework_TestCase { public function testMock() { $test = $this->getMock('mockMe'); $test->expects($this->once()) ->method('increaseValue') ->with($this->logicalAnd($this->greaterThan(0), $this->lessThan(10))) ->will($this->returnValue(null)); $test->increaseValue(6); } public function testMockFails() { $test = $this->getMock('mockMe'); $test->expects($this->once()) ->method('increaseValue') ->with($this->logicalAnd($this->greaterThan(0), $this->lessThan(10))) ->will($this->returnValue(null)); $test->increaseValue(12); } }
Result
phpunit blub.php PHPUnit 3.5.13 by Sebastian Bergmann. .F Time: 0 seconds, Memory: 4.25Mb There was 1 failure: 1) fooTest::testMockFails Expectation failed for method name is equal to <string:increaseValue> when invoked 1 time(s) Parameter 0 for invocation mockMe::increaseValue(<integer:12>) does not match expected value. Failed asserting that <integer:12> is less than <integer:10>. /home/.../blub.php:26
edorian
source share