๊ฐ์ด ๋ฐฐ์ด์ธ์ง ์ค์นผ๋ผ ๊ฐ์ธ์ง ํ์ธํ๊ธฐ ์ํด assertType()์ ์ฌ์ฉํ ๋ autoloader๊ฐ ํธ์ถ๋ฉ๋๋ค(class_exists() ์ฌ์ฉ์ ๋ถ์์ฉ์ผ๋ก). ์์๋๋ ์ ํ ๋ฌธ์์ด ๋งค๊ฐ๋ณ์๊ฐ "๋ฐฐ์ด" ๋๋ ์ค์นผ๋ผ ์ ํ๊ณผ ๋จผ์ ์ผ์นํ๋์ง ํ์ธํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์์:
$this->assertType('๋ฐฐ์ด', array());
์์: true, ์๋ ๋ก๋๋ฅผ ํธ์ถํ์ง ์์
์ค์ : true, "array"๋ผ๋ ํด๋์ค์ ๋ํ ์๋ ๋ก๋ ํธ์ถ
๋ด๋ถ ์ ํ์๋ assertType()
assertInternalType()
๋ฅผ ์ฌ์ฉํ์ญ์์ค.
์๋ํ์ง๋ง ์ ํ์ํ๊ฐ์?
๋ค์์ assertType์ ์ฝ๋์ ๋๋ค.
public static function assertType($expected, $actual, $message = '')
{
if (is_string($expected)) {
if (PHPUnit_Util_Type::isType($expected)) {
if (class_exists($expected) || interface_exists($expected)) {
throw new InvalidArgumentException(
sprintf('"%s" is ambigious', $expected)
);
}
PHPUnit_Util_Type::isType์ด ์ด๋ฏธ ์ ํ์ด ๋ด๋ถ ์ ํ์ธ์ง ์ฌ๋ถ๋ฅผ ํ ์คํธํ๋ฏ๋ก ๋ณ๊ฒฝํด์ผ ํ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
if (class_exists($expected, false) || interface_exists($expected, false)) {
๋ด๋ถ ์ ํ์ ๋ํ ์๋ ๋ก๋๋ฅผ ๋นํ์ฑํํฉ๋๋ค. ๋ด๊ฐ ๋ฌด์์ ๋์น๊ณ ์์ต๋๊น?
๋๋ arnoschaefer์ ๋ง์ ๋์ํด์ผ ํฉ๋๋ค. ๊ทธ์ ์๋ฃจ์ ์ผ๋ก ์ถฉ๋ถํ ๋ ์ ์ฐ๋ฆฌ๊ฐ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋๋ก ์๊ตฌํฉ๋๊น? < 3.5์์ assertType์ ์ฌ์ฉํ๋ ์์ฒ ๊ฐ์ ๋จ์ ํ ์คํธ๋ฅผ ์ด๋ฏธ ๋ณ๊ฒฝํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด ์๋ฃจ์ ์ผ๋ก ๋ชจ๋ ๋จ์ ํ ์คํธ์ ๋ํด assertType์ ์ฌ์ ์ํ ๊ฒ์ ๋๋ค. ์ ์ด ๊ฒฝ๋ก๋ฅผ ์ ํํ๋์ง ๋ ์ ์ค๋ช ํ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด phpunit FAIL์ ์ ์ธํด์ผ ํฉ๋๋ค.
๋จ์ผ ์์ฐํ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง ๋ค๋ฅธ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์ต๋๋ค. ์ฒ์์ ๊ทธ๊ฒ์ด ๊ฐ๋ฅํ๋ค๊ณ ๊ฐ์ ํ ๊ฒ์ ๋์ ์ค์์์ต๋๋ค. ์ด๊ฒ์ด ์ง๊ธ assertInternalType()
์ด ์กด์ฌํ๋ ์ด์ ์
๋๋ค.
๋จ์ผ ์ด์ค์ ๋ฉ์๋๊ฐ ๋ ๊ฐ์ง ๋ค๋ฅธ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์๋ ์ด์ ์ ๋ํ ์ค๋ช ์ ์ ๊ณตํ์ญ์์ค.
๋ํ ๊ทํ์ ๋ฌธ์๋ ๋ค์ ์ง์ ๊ณผ ๋ชจ์๋ฉ๋๋ค.
http://www.phpunit.de/manual/3.5/en/api.html#api.assert.assertType :
๋๋ $expected๋ ๋ด๋ถ ์ ํ์ ๋ํ๋ด๊ธฐ ์ํด ๋ค์ ์์ ์ค ํ๋์ผ ์ ์์ต๋๋ค.
* PHPUnit_Framework_Constraint_IsType::TYPE_ARRAY ("array")
* PHPUnit_Framework_Constraint_IsType::TYPE_BOOL ("bool")
* PHPUnit_Framework_Constraint_IsType::TYPE_FLOAT ("float")
* PHPUnit_Framework_Constraint_IsType::TYPE_INT ("int")
* PHPUnit_Framework_Constraint_IsType::TYPE_NULL ("null")
* PHPUnit_Framework_Constraint_IsType::TYPE_NUMERIC ("numeric")
* PHPUnit_Framework_Constraint_IsType::TYPE_OBJECT ("object")
* PHPUnit_Framework_Constraint_IsType::TYPE_RESOURCE ("resource")
* PHPUnit_Framework_Constraint_IsType::TYPE_STRING ("string")
์๋์ ๋ฉ๋ชจ๋ assertInternalType์ ์ฌ์ฉํด์ผ ํ๊ณ ํ์ํ์ง ์๋ค๋ ์ ๋ง "๊ถ์ฅ"ํฉ๋๋ค.
๋ฉ๋ชจ
๋ด๋ถ ์ ํ์ ํ์ธํ๋ ๋์ assertInternalType("assertInternalType()" ์น์ ์ฐธ์กฐ)์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋จ์ผ ์ด์ค์
๋ฉ์๋๋ ๋ชจํธํ๊ธฐ ๋๋ฌธ์ ๋ ๊ฐ์ง ๋ค๋ฅธ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์ต๋๋ค. String
๋ผ๋ ํด๋์ค๊ฐ ์๊ณ assertType("string", ...)
๋ฅผ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. PHPUnit์ด ์ํ๋ ๊ฒ์ ์ด๋ป๊ฒ ์ ์ ์์๊น์?
๊ถ์ฅ ์ฌํญ์ ํ์ฌ ๊ฒช๊ณ ์๋ ๊ฒฝ์ฐ์ ์ ํํ ์ผ์นํฉ๋๋ค. ์๋ ๋ก๋๋ฅผ ์ฌ์ฉ ์ค์ด๊ณ assertType()
๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํฉ๋๋ค. ์๋ํ์ง ์์ต๋๋ค.
PHP๋ ํด๋์ค๋ฅผ ์ ์ ๋๋ ๋ฌธ์์ด์ด๋ผ๊ณ ํ๋ ๊ฒ์ ํ์ฉํ์ง๋ง ํ์ฌ ์ฝ๋์์๋ ์ ํจํ์ง ์์ ์ธ์(%s๋ ๋ชจํธํจ) ์์ธ๋ฅผ throwํ๋ฏ๋ก ํด๋์ค๋ฅผ ๋ฌธ์์ด, ์ ์ ๋ฑ์ผ๋ก ํธ์ถํ๋ ๊ฒ์ ํ์ฉํ์ง ์์ต๋๋ค.
๋ฌธ์ ๋ 1208ํ์ class_exists ๋ฐ interface_exists ํจ์์์ autoload ๋งค๊ฐ๋ณ์๋ฅผ false๋ก ์ค์ ํ์ง ์์ผ๋ฉด ์๋ ๋ก๋๊ฐ ์กด์ฌํ์ง ์๋ ํ์ผ(์: class.array.php)์ ํฌํจํ๋ ค๊ณ ์๋ํ๊ณ PHP ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๋ ๊ฒ์ ๋๋ค. ์์ธ ๋์ .
์ด๋ ๊ฒ ์์ ํ๋ฉด assertType์ด ํญ์ ๊ทธ๋ฌ๋ ๊ฒ์ฒ๋ผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋, ๊ทธ๋ ์ง ์์ต๋๋ค. ์๋ํ๋ฉด ์๋ ๋ก๋๊ฐ String
ํด๋์ค๋ฅผ ์๋ ๋ก๋ํ ๊ฒ์ผ๋ก ๊ธฐ๋ํ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋/PHPUnit์๊ฒ ์๋ฆฌ๋ฅผ ์ง๋ฅด๊ธฐ ๋๋ฌธ์
๋๋ค.
์ฌ๊ธฐ ๋ด ์กฐ์ธ์ด ์์ต๋๋ค. ๊ฐ์ ธ๊ฐ๊ฑฐ๋ ๋๋์ญ์์ค.
assertType()
๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ(๊ทธ๋ ๊ฒ ํ์ํ๋ ๊ฒ์ ์์์ง๋ง) ๊ฒฐ๊ตญ ์ฌ๋ผ์ง ๊ฒ์
๋๋ค. ๋ง์ด๊ทธ๋ ์ด์
์ ์ฝ๊ฒ ํ๊ธฐ ์ํด ํ์ฌ ๋ฒ์ ์ PHPUnit์๋ง ์กด์ฌํฉ๋๋ค.
assertInternalType()
๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์์ ์ง์ ๋ ๋ด๋ถ ์ ํ์ด ์๋์ง ํ์ธํฉ๋๋ค.
assertInstanceOf()
๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด์ ์ง์ ๋ ์ ํ(ํด๋์ค ๋๋ ์ธํฐํ์ด์ค)์ด ์๋์ง ํ์ธํฉ๋๋ค.
๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๊ธฐ๋ฅ์๋ ๋ฌธ์ ๊ฐ ์์ง๋ง ๋ง์ด๊ทธ๋ ์ด์ ์ด ์ ํ ์ฉ์ดํ์ง ์์ต๋๋ค. ์ฒ์์๋ ์ด ์์ธ๊ฐ ์์๊ณ ์ด์ String ํด๋์ค๋ฅผ ์๋ ๋ก๋ํ๋ ์ฌ๋ ๋์ ๋ด ์ฝ๋๋ฅผ ์ค๋จํ๋ phpunit 3.4์์ ์๋ ๊ธฐ๋ฅ์ ๋ณ๊ฒฝํ์ต๋๋ค. ๋ฐ๋ผ์ phpunit 3.5์์ ์์ ํ ์ ๊ฑฐํ๊ฑฐ๋ 3.4 ๊ธฐ๋ฅ์ผ๋ก ๋๋๋ ค์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ง์ ํด, ํฅ๋ถํ ํ์ ์์ด. ๋๋ Sebastian์ ๊ฒฐ์ ์ ๋ฐ๋ผ ์ด ์ ์์ต๋๋ค. ์ค์ ๋ก ์ดํด๊ฐ ๊ฐ๋๋ค. ๊ทธ ์ด์ ๋ฅผ ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋์ ๋๋ ์์ผ๋ก ๋ค๋ฅธ ๋ ๊ฐ์ง ๊ธฐ๋ฅ์ ์ฌ์ฉํ ๊ฒ์ ๋๋ค. ๋ฐ๋ฉด์ assertType์ด ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๊ฒฝ์ฐ ์ด์ ๊ณผ ๊ฐ์ด ๊ณ์ ์๋ํ๊ณ ํฅํ ์ธ์ ๊ฐ ์ ๊ฑฐ๋ ์ ์์ผ๋ฏ๋ก ๋ ์ด์ ์ฌ์ฉ๋์ง ์์์ ๋ช ํํ๊ฒ ๋ฌธ์ํํ์ญ์์ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ์์ ์ํํธ์จ์ด์ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ๋ฌผ๋ก Sebastian์ ๊ฒฐ์ ์ ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ด๋ถ ์ ํ์๋
assertType()
assertInternalType()
๋ฅผ ์ฌ์ฉํ์ญ์์ค.