Php 单元测试日期敏感函数?
我正在尝试为date helper类编写测试。我想知道这方面的最佳做法是什么。Php 单元测试日期敏感函数?,php,javascript,ruby,unit-testing,Php,Javascript,Ruby,Unit Testing,我正在尝试为date helper类编写测试。我想知道这方面的最佳做法是什么。 下面是一个PHP示例 public static function get_date($offset = 0){ $date = mktime(0, 0, 0, date('m') , date('d') + $offset, date('Y')); return array( 'day' => date('D',$date),
下面是一个PHP示例
public static function get_date($offset = 0){
$date = mktime(0, 0, 0, date('m') , date('d') + $offset, date('Y'));
return array(
'day' => date('D',$date),
'month' => date('M',$date),
'year' => date('Y',$date)
);
}
public static function today(){
return self::get_date();
}
public static function tomorrow(){
return self::get_date(1);
}
public static function yesterday(){
return self::get_date(-1);
}
所以我要找的是一些可以测试这些函数的测试示例,或者是一种编写这些函数的新方法,这样它们就可以直观地进行测试
我在Java中找到了一些例子,但它们看起来很不雅观,我真的不懂Java,除非你把ActionScript3算作Java;)
Javascript或Ruby中的解决方案作为示例也非常有用,但我的类是用PHP编写的,所以这将是理想的
谢谢 我通常会这样做:
<?php
class Date
{
protected $date;
public function __construct($date = null)
{
$this->date = $date ? $date : time();
}
public function today()
{
// to something with $this->date
}
}
class DateTest extends PHPUnit_Framework_TestCase
{
public function testToday()
{
$date = new Date(strtotime('2010-10-17 00:00:00'));
$this->assertEquals($expectedValue, $date->today());
}
}
我希望函数保持静态。你认为呢?静态方法在单元测试界被视为一个禁忌,因为它使得依赖它们的代码很难测试。另一件事是,使用实例方法时,您在API中声明,除非构造函数成功执行,否则无法使用某个方法。所以您可以在构造函数中进行验证,并相应地抛出异常。对于静态方法,你没有构造函数的等价物。我不知道静态方法是不受欢迎的。我喜欢把它们当作我的助手。哦,好吧。再见静态方法…:(你好,更简单的测试写作:)