Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 单元测试日期敏感函数?_Php_Javascript_Ruby_Unit Testing - Fatal编程技术网

Php 单元测试日期敏感函数?

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),

我正在尝试为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),
            '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中声明,除非构造函数成功执行,否则无法使用某个方法。所以您可以在构造函数中进行验证,并相应地抛出异常。对于静态方法,你没有构造函数的等价物。我不知道静态方法是不受欢迎的。我喜欢把它们当作我的助手。哦,好吧。再见静态方法…:(你好,更简单的测试写作:)