| 207 | defineを使って定義されている定数は、テスト中に自由に上書きすることができません。[[BR]] |
| 208 | そこで、定数の値によって条件が分岐する場合は定数の値ごとにテストコードのファイルを分割します。[[BR]] |
| 209 | * ソースコード |
| 210 | {{{ |
| 211 | #!php |
| 212 | <?php |
| 213 | function sfGetHashString($str, $salt) { |
| 214 | $res = ''; |
| 215 | if ($salt == '') { |
| 216 | $salt = AUTH_MAGIC; |
| 217 | } |
| 218 | if (AUTH_TYPE == 'PLAIN') { |
| 219 | $res = $str; |
| 220 | } else { |
| 221 | $res = hash_hmac(PASSWORD_HASH_ALGOS, $str . ':' . AUTH_MAGIC, $salt); |
| 222 | } |
| 223 | return $res; |
| 224 | } |
| 225 | }}} |
| 226 | * テストコード |
| 227 | {{{ |
| 228 | #!php |
| 229 | <?php |
| 230 | $HOME = realpath(dirname(__FILE__)) . "/../../../.."; |
| 231 | // このテスト専用の定数の設定。必ずCommon_TestCase.phpより先に定義する |
| 232 | define('AUTH_TYPE', 'PLAIN'); |
| 233 | require_once($HOME, "/tests/class/Common_TestCase.php"); |
| 234 | |
| 235 | // クラス名に条件(authTypePlain)も含める |
| 236 | class SC_Utils_sfGetHasString_authTypePlainTest extends Common_TestCase { |
| 237 | |
| 238 | // AUTH_TYPE=PLAINであることを想定した実際のテストコード |
| 239 | } |
| 240 | }}} |
| 241 | このようにCommon_TestCaseより先に指定したい定数を定義することで、このテストクラスに限定した値を定義することができます。 |