我在PHPUnit中遇到了一个问题,在比较日期时,我想在equalTo方法中使用增量参数。比方说,如果日期相差不超过10秒,我想将它们视为相等。$some_delta的合适值是多少? 10? 10000?或者是完全不同的东西?
$this->_restClient->expects($this->at(0))
->method('getData')
->with(
$this->equalTo(array('1')),
$this->equalTo(array('2')),
$this->equalTo($this->_date, $some_delta),
$this->equalTo(null),
)
->will($this->returnValue($this->_restResponses['generalRestResponse']));
发布于 2019-12-05 01:51:03
PHPUnit >= 7.5 (DateTime)
class MyDatesTest extends PHPUnit_Framework_TestCase {
public function testAllDateOk() {
$date1 = new DateTime('2019-01-01 00:00:00');
$date2 = new DateTime('2019-01-01 00:00:03');
// ± 5 seconds are equals
$this->assertEqualsWithDelta($date1->getTimestamp(), $date2->getTimestamp(), 5);
// ± 1 second are distinct
$this->assertNotEqualsWithDelta($date1->getTimestamp(), $date2->getTimestamp(), 1);
}
}
PHPUnit >= 7.5 (碳)
class MyDatesTest extends PHPUnit_Framework_TestCase {
public function testAllDateOk() {
$date1 = Carbon::now();
$date2 = Carbon::now()->addSeconds(3);
// ± 5 seconds are equals
$this->assertEqualsWithDelta($date1->timestamp, $date2->timestamp, 5);
// ± 1 second are distinct
$this->assertNotEqualsWithDelta($date1->timestamp, $date2->timestamp, 1);
}
}
说明:从PHPUnit 8开始,不推荐使用带有4个参数的assertEquals
发布于 2011-08-17 19:53:03
增量值只需为秒数
您需要时间戳可以与4th parameter to assert equals
或2nd to equalTo
不同的秒数。这两个函数( assertEquals
/ equalTo
)都指向PHPUnit_Framework_Constraint_IsEqual
,因此增量处理是相同的。
示例:
<?php
class foo extends PHPUnit_Framework_TestCase {
public function testDateDiffsWorks() {
$date1 = new DateTime('2011-01-01 00:00:00');
$date2 = new DateTime('2011-01-01 00:00:03');
$this->assertEquals($date1->getTimestamp(), $date2->getTimestamp(), '', 5);
}
public function testDateDiffsFails() {
$date1 = new DateTime('2011-01-01 00:00:00');
$date2 = new DateTime('2011-01-01 00:00:03');
$this->assertEquals($date1->getTimestamp(), $date2->getTimestamp(), '', 0.5);
}
}
和输出
第一个测试有效,第二个测试失败。
phpunit test.php
PHPUnit 3.5.14 by Sebastian Bergmann.
.F
Time: 0 seconds, Memory: 6.00Mb
There was 1 failure:
1) foo::testDateDiffsFails
Failed asserting that <integer:1293836403> matches expected <integer:1293836400>.
/home/edo/test.php:16
发布于 2019-08-12 19:09:28
对edorian答案的补充-从PhpUnit v7.5开始,您可以使用assertEqualsWithDelta()
,自PhpUnit v8以来,就不再推荐使用assertEquals()
https://stackoverflow.com/questions/7091396
复制相似问题