2

私は、一連の静的メソッドを使用してクラスの単体テストを作成するという任務を負っています。そのほとんどは、クラス自体で定義されたある種の定数を返し、テスト内から物事を主張するだけのテストの価値について考えていました。自体。例えば:

public static function stringToHex($color = null) {
    switch($color) {
        case 'green':
            return self::OK; // self::OK = '#00cc00'
        break;
        default 'red':
            return self::DANGER; // '#cc0000'
    }
}

自分自身をテストしているクラスで定義されている場合、どのように効果的に戻り値をテストしますか?私の頭のてっぺんからそれはこのようになります:

public function teststringToHex() {
    $this->assertEquals(MyClass::stringToHexColor('green'), MyClass::OK);
}

しかし、私は結果がテストの価値すら知らないものであると主張しているので、これは正しくないようです。

4

1 に答える 1

0

現在、テストは実装の詳細を信頼しており、それが正しいかどうかに依存しています。定数が正しい値であると信頼しない限り、それは問題ありません。その場合、たとえばDataProviderを使用して、期待値の16進値を渡す必要があります。

/**
 * @dataProvider provideColorToHexMapping
 */
public function testStringToHex($colorName, $expectedHex) {
    $this->assertEquals(
        $expectedHex,
        MyClass::stringToHexColor($colorName)
    );
}
public function provideColorToHexMapping()
{
    return array(
        array('green', '#00cc00'),
        …
    );
}
于 2012-05-23T11:34:48.737 に答える