{"id":4788,"date":"2020-09-23T13:50:55","date_gmt":"2020-09-23T04:50:55","guid":{"rendered":"https:\/\/deha.co.jp\/magazine\/?p=4788"},"modified":"2021-07-24T01:36:37","modified_gmt":"2021-07-23T16:36:37","slug":"laravel-phpunit","status":"publish","type":"post","link":"https:\/\/deha.co.jp\/magazine\/laravel-phpunit\/","title":{"rendered":"Laravel+PHPUnit\u3067\u8a8d\u8a3c\u4ed8\u304dAPI\u306e\u30c6\u30b9\u30c8\u3092\u884c\u3046"},"content":{"rendered":"\n<p>PHP\u306e\u4eba\u6c17\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af<a href=\"https:\/\/deha.co.jp\/magazine\/laravel-development-choice\/\">Laravel<\/a>\u3067\u306fWeb\u30b5\u30a4\u30c8\u306e\u7ba1\u7406\u753b\u9762\u3092\u958b\u767a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u958b\u767a\u306e\u624b\u9806\u306b\u95a2\u3057\u3066\u306f\u4ee5\u4e0b\u306e\u8a18\u4e8b\u306b\u3066\u5177\u4f53\u7684\u306b\u7d39\u4ecb\u3092\u3057\u3066\u3044\u304d\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<ul><li><a href=\"https:\/\/deha.co.jp\/magazine\/admin-laravel-nuxt-setup\/\">Laravel\uff08API\uff09\u3068Nuxt.js\u306e\u9023\u643a\u3092\u884c\u3046\u3010Laravel6+Nuxt.js\u3067\u4f5c\u308b\u7ba1\u7406\u753b\u9762\u3011<\/a><\/li><li><a href=\"https:\/\/deha.co.jp\/magazine\/admin-laravel-nuxt-cookie-auth\/\">Cookie\u306b\u3088\u308bAPI\u7d4c\u7531\u306e\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u6a5f\u80fd\u3092\u4f5c\u308b\u3010Laravel6\u3068Nuxt.js\u3067\u4f5c\u308b\u7ba1\u7406\u753b\u9762\u3011<\/a><\/li><li><a href=\"https:\/\/deha.co.jp\/magazine\/admin-laravel-nuxt-crud\/\">Nuxt.js+Vuetify\u3068Laravel\u3067CRUD\u3092\u4f5c\u308b<\/a><\/li><\/ul>\n\n\n\n<p>\u3055\u3089\u306b\u958b\u767a\u5f8c\u306e\u30c7\u30d7\u30ed\u30a4\u306e\u624b\u9806\u306f\u4ee5\u4e0b\u3067\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<ul><li><a href=\"https:\/\/deha.co.jp\/magazine\/admin-laravel-nuxt-heroku-deploy\/\">Heroku+Laravel+MySQL\u3092\u72ec\u81ea\u30c9\u30e1\u30a4\u30f3\u3067\u516c\u958b\u3059\u308b<\/a><\/li><li><a href=\"https:\/\/deha.co.jp\/magazine\/nuxt-ssr-heroku-deploy\/\">Nuxt.js\u3092SSR\u30e2\u30fc\u30c9\u3067Heroku\u306b\u30c7\u30d7\u30ed\u30a4\u3057\u3066\u516c\u958b\u3059\u308b<\/a><\/li><\/ul>\n\n\n\n<p>\u3053\u306e\u8a18\u4e8b\u3067\u306fPHPUnit\u3067Laravel\u306eAPI\u30c6\u30b9\u30c8\u3092\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<ul><li><strong>Laravel\u3092\u4f7f\u3063\u3066\u69cb\u7bc9\u3092\u3057\u305f\u3044\u65b9<\/strong><\/li><li><strong>Web\u30b5\u30a4\u30c8\u69cb\u7bc9\u306e\u5177\u4f53\u7684\u306a\u624b\u6cd5\u304c\u77e5\u308a\u305f\u3044\u65b9<\/strong><\/li><\/ul>\n\n\n\n<p>\u306b\u304a\u3059\u3059\u3081\u306e\u8a18\u4e8b\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3092\u8aad\u3081\u3070\u3044\u3088\u3044\u3088Laravel\u3067\u958b\u767a\u3057\u305f\u7ba1\u7406\u753b\u9762\u3092\u30ea\u30ea\u30fc\u30b9\u3059\u308b\u6e96\u5099\u304c\u3067\u304d\u307e\u3059\u3088\u3002<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">\u6700\u4f4e\u9650\u3084\u308a\u305f\u3044\u3053\u3068\u3092\u6c7a\u3081\u308b<\/h2>\n\n\n\n<p>\u307e\u305a\u4f5c\u696d\u306e\u524d\u306b\u3001\u6700\u4f4e\u9650\u3084\u308a\u305f\u3044\u3053\u3068\u3092\u6c7a\u3081\u3066\u304a\u304d\u307e\u3059\u3002<br>\u4eca\u56de\u306fLaravel\u306e\u8a8d\u8a3c\u5f8c\u306eAPI\u306e\u30c6\u30b9\u30c8\u3092\u66f8\u3051\u308b\u3088\u3046\u306b\u3057\u305f\u3044\u306e\u3067\u3001\u4ee5\u4e0b\u306e\u8981\u4ef6\u306b\u3057\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u25cf Cookie\u306eAPI\u8a8d\u8a3c\u306e\u90e8\u5206\u306f\u30c6\u30b9\u30c8\u305b\u305a\u3001\u8a8d\u8a3c\u6e08\u3068\u3057\u3066\u6271\u3046\n\u25cf \u8a8d\u8a3c\u5f8c\u306e\u7ba1\u7406\u8005\u30e6\u30fc\u30b6\u30fc\u306e\u4e00\u89a7\u53d6\u5f97\u306eAPI\u3092\u30c6\u30b9\u30c8\u3059\u308b<\/code><\/pre>\n\n\n\n<p>Cookie\u8a8d\u8a3c\u306eAPI\u306f\u4ee5\u524d\u306e\u8a18\u4e8b\u3067\u5b9f\u88c5\u3057\u305f\u3082\u306e\u3092\u5229\u7528\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong><a href=\"https:\/\/deha.co.jp\/magazine\/admin-laravel-nuxt-cookie-auth\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Cookie\u306b\u3088\u308bAPI\u7d4c\u7531\u306e\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u6a5f\u80fd\u3092\u4f5c\u308b\u3010Laravel6\u3068Nuxt.js\u3067\u4f5c\u308b\u7ba1\u7406\u753b\u9762\u3011<\/a><\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u30c6\u30b9\u30c8\u3092\u66f8\u304f\u305f\u3081\u306e\u524d\u6e96\u5099<\/h2>\n\n\n\n<p>Laravel\u3067\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067PHPUnit\u304c\u4f7f\u3048\u308b\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u304c\u3001<br>\u5b9f\u969b\u306b\u30c6\u30b9\u30c8\u66f8\u3044\u3066\u3044\u304f\u305f\u3081\u306b\u306f\u3001\u3044\u304f\u3064\u304b\u6e96\u5099\u304c\u5fc5\u8981\u306a\u306e\u3067\u3001\u305d\u3061\u3089\u3092\u9032\u3081\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u30c6\u30b9\u30c8\u7528\u306eDB\u3092\u4f5c\u6210<\/h3>\n\n\n\n<p>\u958b\u767a\u74b0\u5883\u306e\u30c7\u30fc\u30bf\u306b\u5f71\u97ff\u3092\u4e0e\u3048\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u3001\u307e\u305a\u306f\u3001\u4ee5\u4e0b\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u30c6\u30b9\u30c8\u7528\u306eDB\u3092\u4f5c\u6210\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mysql&gt; create database laravel_test;<\/code><\/pre>\n\n\n\n<p>PHPUnit\u3067\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067<code>sqlite<\/code>\u3092\u4f7f\u3046\u8a2d\u5b9a\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u304c\u3001\u672c\u756aDB\u3068\u74b0\u5883\u3092\u63c3\u3048\u308b\u305f\u3081\u3001\u30c6\u30b9\u30c8\u3067\u3082MySQL\u3092\u4f7f\u3046\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u30c6\u30b9\u30c8\u7528\u306e.env\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210<\/h3>\n\n\n\n<p>\u6b21\u306b\u4e0b\u8a18\u30b3\u30de\u30f3\u30c9\u3067\u30c6\u30b9\u30c8\u7528\u306e.env\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cp .env.example .env.testing<\/code><\/pre>\n\n\n\n<p>\u30d5\u30a1\u30a4\u30eb\u304c\u4f5c\u6210\u3067\u304d\u305f\u3089\u3001\u4ee5\u4e0b\u306e\u5185\u5bb9\u3067<code>.env.testing<\/code>\u3092\u4fee\u6b63\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>APP_NAME=Laravel\n\/\/testing\u306b\u5909\u66f4\nAPP_ENV=testing\nAPP_KEY=\nAPP_DEBUG=true\nAPP_URL=http:\/\/localhost\n\nLOG_CHANNEL=stack\n\nDB_CONNECTION=mysql\nDB_HOST=127.0.0.1\nDB_PORT=3306\n\/\/\u8ffd\u52a0\u3057\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d\u306b\u5909\u66f4\nDB_DATABASE=laravel_test\nDB_USERNAME=root\nDB_PASSWORD=<\/code><\/pre>\n\n\n\n<p>\u4fee\u6b63\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001\u6b21\u306b\u4ee5\u4e0b\u30b3\u30de\u30f3\u30c9\u3067\u30c6\u30b9\u30c8\u7528\u306e<code>APP_KEY<\/code>\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php artisan key:generate --env=testing<\/code><\/pre>\n\n\n\n<p>\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u5024\u304c<code>.env.testing<\/code>\u306b\u4f5c\u6210\u3055\u308c\u308c\u3070OK\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>APP_KEY=base64:XXXXXXX<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">PHPUnit\u306e\u8a2d\u5b9a\u3092MySQL\u3092\u4f7f\u3046\u3088\u3046\u306b\u5909\u66f4<\/h3>\n\n\n\n<p>\u6b21\u306b\u4ee5\u4e0b\u306e\u5185\u5bb9\u3067<code>phpunit.xml<\/code>\u3092\u5909\u66f4\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;php&gt;\n    &lt;server name=\"APP_ENV\" value=\"testing\"\/&gt;\n    &lt;server name=\"BCRYPT_ROUNDS\" value=\"4\"\/&gt;\n    &lt;server name=\"CACHE_DRIVER\" value=\"array\"\/&gt;\n    \/\/\u3053\u3053\u3092\u5909\u66f4\n    &lt;server name=\"DB_CONNECTION\" value=\"mysql\"\/&gt;\n    &lt;server name=\"MAIL_DRIVER\" value=\"array\"\/&gt;\n    &lt;server name=\"QUEUE_CONNECTION\" value=\"sync\"\/&gt;\n    &lt;server name=\"SESSION_DRIVER\" value=\"array\"\/&gt;\n&lt;\/php&gt;<\/code><\/pre>\n\n\n\n<p>PHPUnit\u306f<code>.env.{APP_ENV\u306e\u5024}<\/code>\u306e.env\u30d5\u30a1\u30a4\u30eb\u3092\u81ea\u52d5\u3067\u8aad\u307f\u8fbc\u3080\u4f5c\u308a\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<br>\u305d\u306e\u305f\u3081\u3001<code>DB_DATABASE<\/code> \u306f<code>.env.testing<\/code>\u306e\u5024\u304c\u8a2d\u5b9a\u3055\u308c\u308b\u306e\u3067\u3001<code>phpunit.xml<\/code>\u5074\u304b\u3089\u306f\u524a\u9664\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u30c6\u30b9\u30c8\u7528\u306eDB\u306b\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c<\/h3>\n\n\n\n<p>\u6b21\u306b\u4ee5\u4e0b\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php artisan migrate --env=testing<\/code><\/pre>\n\n\n\n<p>\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u304c\u53cd\u6620\u3055\u308c\u308c\u3070OK\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Migration table created successfully.\nMigrating: 2014_10_12_000000_create_users_table\nMigrated:  2014_10_12_000000_create_users_table (0.05 seconds)\nMigrating: 2014_10_12_100000_create_password_resets_table\nMigrated:  2014_10_12_100000_create_password_resets_table (0.06 seconds)\nMigrating: 2019_08_19_000000_create_failed_jobs_table\nMigrated:  2019_08_19_000000_create_failed_jobs_table (0.03 seconds)\nMigrating: 2020_05_09_010620_create_admin_users_table\nMigrated:  2020_05_09_010620_create_admin_users_table (0.05 seconds)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u30c6\u30b9\u30c8\u30b3\u30fc\u30c9\u306e\u4f5c\u6210<\/h2>\n\n\n\n<p>\u4e8b\u524d\u6e96\u5099\u304c\u5b8c\u4e86\u3057\u305f\u306e\u3067\u3001\u3053\u3053\u304b\u3089\u306f\u5b9f\u969b\u306b\u30c6\u30b9\u30c8\u3092\u66f8\u3044\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Feature\u3068Unit\u306e\u4f7f\u3044\u5206\u3051\u306b\u3064\u3044\u3066<\/h3>\n\n\n\n<p><a href=\"https:\/\/deha.co.jp\/magazine\/php-framework-laravel\/\">Laravel<\/a>\u3067\u306f\u3001tests\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u4e0b\u306bFeature\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3068Unit\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u3042\u308a\u3001<br>\u3053\u306e\u4e2d\u306b\u30c6\u30b9\u30c8\u30b3\u30fc\u30c9\u3092\u914d\u7f6e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>Feature\u306b\u306f<code>Controller<\/code>\u3084<code>Middleware<\/code>\u3068\u3044\u3063\u305fHTTP\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u3088\u308b\u6a5f\u80fd\u30c6\u30b9\u30c8\u3001Unit\u306b\u306f\u305d\u308c\u4ee5\u5916\u306e\u5358\u4f53\u30c6\u30b9\u30c8\u306b\u3064\u3044\u3066\u66f8\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u305d\u308c\u4ee5\u5916\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u6210\u306b\u3059\u308b\u3053\u3068\u3082\u51fa\u6765\u307e\u3059\u304c\u3001<strong>\u57fa\u672c\u306e\u69cb\u6210\u3092\u8e0f\u8972\u3057\u305f\u65b9\u304c\u53ef\u8aad\u6027\u304c\u4e0a\u304c\u3063\u3066\u826f\u3044\u3067\u3057\u3087\u3046\u3002<\/strong><\/p>\n\n\n\n<p>\u4eca\u56de\u306fAPI\u306e\u30c6\u30b9\u30c8\u306a\u306e\u3067\u3001Feature\u30c6\u30b9\u30c8\u3092\u66f8\u3044\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Feature\u30c6\u30b9\u30c8\u306e\u96db\u5f62\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210<\/h3>\n\n\n\n<p>\u307e\u305a\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067Feature\u30c6\u30b9\u30c8\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php artisan make:test Api\/AdminUserTest<\/code><\/pre>\n\n\n\n<p>\u6b21\u306e\u3088\u3046\u306a\u5185\u5bb9\u306e<code>tests\/Feature\/Api\/AdminUserTest.php<\/code>\u304c\u4f5c\u3089\u308c\u3066\u3044\u308c\u3070OK\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nnamespace Tests\\Feature\\Api;\n\nuse Illuminate\\Foundation\\Testing\\RefreshDatabase;\nuse Illuminate\\Foundation\\Testing\\WithFaker;\nuse Tests\\TestCase;\n\nclass AdminUserTest extends TestCase\n{\n    \/**\n     * A basic feature test example.\n     *\n     * @return void\n     *\/\n    public function testExample()\n    {\n        $response = $this-&gt;get('\/');\n\n        $response-&gt;assertStatus(200);\n    }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u30b9\u30af\u30ea\u30d7\u30c8\u30d5\u30a1\u30a4\u30eb\u3067\u30c6\u30b9\u30c8\u3092\u5b9f\u884c<\/h3>\n\n\n\n<p><a href=\"https:\/\/deha.co.jp\/magazine\/php-framework-laravel\/\">Laravel<\/a>\u306f\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\u3057\u3066\u9ad8\u901f\u5316\u3057\u3066\u3044\u308b\u305f\u3081\u3001DB\u3092\u6271\u3046\u30c6\u30b9\u30c8\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3059\u308b\u524d\u306b\u306f\u00a0<code>php artisan config:clear<\/code>\u00a0\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u304c\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3067\u52e7\u3081\u3089\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3053\u308c\u3092\u3057\u3066\u304a\u304b\u306a\u3044\u3068\u3001<strong>\u30ad\u30e3\u30c3\u30b7\u30e5\u3067\u672c\u756aDB\u304c\u30ea\u30bb\u30c3\u30c8\u3055\u308c\u3066\u3057\u307e\u3046\u3068\u3044\u3046\u554f\u984c\u3082\u8d77\u3053\u308a\u304b\u306d\u307e\u305b\u3093\u3002<\/strong><br>\u305d\u306e\u305f\u3081\u3001\u4ee5\u4e0b\u306e\u5185\u5bb9\u306e<code>test.sh<\/code>\u3068\u3044\u3046\u30b9\u30af\u30ea\u30d7\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n\nphp artisan config:clear\n.\/vendor\/bin\/phpunit tests\/Feature\/Api<\/code><\/pre>\n\n\n\n<p>\u30d5\u30a1\u30a4\u30eb\u304c\u51fa\u6765\u305f\u3089\u4e0b\u8a18\u30b3\u30de\u30f3\u30c9\u3067\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod +x test.sh \/\/\u5b9f\u884c\u6a29\u9650\u3092\u4ed8\u4e0e(\u6700\u521d\u306e1\u56de\u3060\u3051\u3067OK)\n.\/test.sh<\/code><\/pre>\n\n\n\n<p>\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u753b\u9762\u304c\u51fa\u308c\u3070OK\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"289\" src=\"https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2020\/09\/image-1024x289.png\" alt=\"\" class=\"wp-image-4807\" srcset=\"https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2020\/09\/image-1024x289.png 1024w, https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2020\/09\/image-300x85.png 300w, https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2020\/09\/image-768x216.png 768w, https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2020\/09\/image-585x165.png 585w, https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2020\/09\/image.png 1150w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">\u7ba1\u7406\u8005\u30e6\u30fc\u30b6\u30fc\u7528\u306eFactory\u3092\u8ffd\u52a0<\/h3>\n\n\n\n<p>\u30ed\u30b0\u30a4\u30f3\u306e\u30c6\u30b9\u30c8\u3092\u3059\u308b\u305f\u3081\u306b\u7ba1\u7406\u8005\u30e6\u30fc\u30b6\u30fc\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<br>\u3053\u3046\u3044\u3063\u305f\u30c6\u30b9\u30c8\u7528\u30c7\u30fc\u30bf\u306e\u7528\u610f\u306b\u306f\u3001Factory\u3092\u4f7f\u3044\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<p>\u4ee5\u4e0b\u30b3\u30de\u30f3\u30c9\u3067\u7ba1\u7406\u8005\u30e6\u30fc\u30b6\u30fc\u7528\u306eFactory\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php artisan make:factory AdminUserFactory --model=AdminUser<\/code><\/pre>\n\n\n\n<p>\u4f5c\u6210\u3055\u308c\u305f<code>database\/factories\/AdminUserFactory.php<\/code>\u3092\u4ee5\u4e0b\u5185\u5bb9\u306b\u7de8\u96c6\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n\/** @var \\Illuminate\\Database\\Eloquent\\Factory $factory *\/\n\nuse App\\AdminUser;\nuse Faker\\Generator as Faker;\n\n$factory-&gt;define(AdminUser::class, function (Faker $faker) {\n    static $password;\n\n    return &#91;\n        'name' =&gt; $faker-&gt;name,\n        'email' =&gt; $faker-&gt;unique()-&gt;safeEmail,\n        'email_verified_at' =&gt; now(),\n        'password' =&gt; $password ?: $password = bcrypt('secret'),\n        'remember_token' =&gt; Str::random(10),\n    ];\n});<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u3067\u7ba1\u7406\u8005\u30e6\u30fc\u30b6\u30fc\u3092\u4f5c\u308b\u3053\u3068\u304c\u51fa\u6765\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u4e00\u89a7\u53d6\u5f97\uff08Index\uff09\u306e\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u3092\u8ffd\u52a0<\/h3>\n\n\n\n<p>\u6b21\u306b<code>tests\/Feature\/Api\/AdminUserTest.php<\/code>\u3092\u4ee5\u4e0b\u306e\u5185\u5bb9\u306b\u7de8\u96c6\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nnamespace Tests\\Feature\\Api;\n\nuse App\\AdminUser;\n\nuse Illuminate\\Foundation\\Testing\\WithoutMiddleware;\nuse Illuminate\\Foundation\\Testing\\RefreshDatabase;\nuse Illuminate\\Foundation\\Testing\\WithFaker;\nuse Tests\\TestCase;\n\nclass AdminUserTest extends TestCase\n{\n    \/\/ \u30c6\u30b9\u30c8\u30c7\u30fc\u30bf\u306e\u30ea\u30bb\u30c3\u30c8\n    use RefreshDatabase;\n    \/\/ \u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u306e\u7121\u52b9\u5316\n    use WithoutMiddleware;\n\n    private $adminUser;\n\n    public function testIndex()\n    {\n        \/\/ \u30c6\u30b9\u30c8\u30c7\u30fc\u30bf\u3092Factory\u3067\u4f5c\u6210\n        $adminUser1 = factory(AdminUser::class)-&gt;create();\n        $adminUser2 = factory(AdminUser::class)-&gt;create();\n\n        $response = $this-&gt;json('GET', '\/api\/admin_users');\n        $response\n            -&gt;assertStatus(200)\n            -&gt;assertJson(\n                &#91;\n                    &#91;\n                        'id' =&gt; $adminUser1-&gt;id,\n                        'name' =&gt; $adminUser1-&gt;name,\n                        'email' =&gt; $adminUser1-&gt;email,\n                    ],\n                    &#91;\n                        'id' =&gt; $adminUser2-&gt;id,\n                        'name' =&gt; $adminUser2-&gt;name,\n                        'email' =&gt; $adminUser2-&gt;email,\n                    ]\n                ]\n            );\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>Laravel\u3067\u306f\u4fbf\u5229\u306a\u5171\u901a\u51e6\u7406\u304c<code>trait<\/code>\u3068\u3057\u3066\u63d0\u4f9b\u3055\u308c\u3066\u304a\u308a\u3001\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f<code>RefreshDatabase<\/code>\u3068<code>WithoutMiddleware<\/code>\u3092\u5229\u7528\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u4eca\u56de\u4f7f\u3063\u3066\u3044\u308bAPI\u3067\u306fAjax\u4ee5\u5916\u306e\u901a\u4fe1\u3092403\u30a8\u30e9\u30fc\u306b\u3059\u308b<code>Middleware<\/code>\u3092\u6307\u5b9a\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u30c6\u30b9\u30c8\u3067\u306f\u4e0d\u8981\u306a\u305f\u3081\u9664\u5916\u3059\u308b\u3088\u3046\u306b\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u52d5\u4f5c\u3092\u78ba\u8a8d\u3059\u308b<\/h3>\n\n\n\n<p>\u7de8\u96c6\u3067\u304d\u305f\u3089\u3001\u30c6\u30b9\u30c8\u5b9f\u884c\u5f8c\u306b\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php artisan tinker --env=testing<\/code><\/pre>\n\n\n\n<p>\u30c6\u30b9\u30c8\u304c\u6210\u529f\u3057\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30c7\u30fc\u30bf\u304c\u30ea\u30bb\u30c3\u30c8\u3055\u308c\u3066\u3044\u308c\u3070OK\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"734\" height=\"152\" src=\"https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2020\/09\/image-1.png\" alt=\"\" class=\"wp-image-4816\" srcset=\"https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2020\/09\/image-1.png 734w, https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2020\/09\/image-1-300x62.png 300w, https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2020\/09\/image-1-585x121.png 585w\" sizes=\"(max-width: 734px) 100vw, 734px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u304a\u308f\u308a\u306b<\/h2>\n\n\n\n<p>\u4eca\u56de\u306fPHPUnit\u3067Laravel\u306e\u8a8d\u8a3c\u4ed8\u304dAPI\u306e\u30c6\u30b9\u30c8\u3092\u884c\u3044\u307e\u3057\u305f\u3002<br>\u672c\u8a18\u4e8b\u3067\u306f\u4e00\u89a7\u53d6\u5f97\u306e\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u306e\u307f\u7d39\u4ecb\u3057\u307e\u3057\u305f\u304c\u3001\u540c\u69d8\u306bCRUD\u306e\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u3092\u66f8\u3051\u307e\u3059\u306d\u3002<\/p>\n\n\n\n<p>\u672c\u65e5\u7d39\u4ecb\u3057\u305f\u3088\u3046\u306a\u3082\u306e\u3092\u5916\u6ce8\u3057\u3066\u307f\u308b\u306e\u306f\u3044\u304b\u304c\u3067\u3057\u3087\u3046\u304b\u3002&nbsp;<strong>deha\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u30ba\u3067\u306f<a href=\"https:\/\/deha.co.jp\/magazine\/why-vietnams\/\">\u30aa\u30d5\u30b7\u30e7\u30a2\u958b\u767a<\/a>\u306b\u3088\u3063\u3066\u4f4e\u30b3\u30b9\u30c8\u3067\u8fc5\u901f\u306a\u958b\u767a\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002<\/strong><\/p>\n\n\n\n<p>Laravel\u306b\u95a2\u3057\u3066\u8a73\u3057\u304f\u304a\u8a71\u3092\u805e\u304d\u305f\u3044\u65b9\u3001\u958b\u767a\u76f8\u8ac7\u3084\u7121\u6599\u304a\u898b\u7a4d\u308a\u3092\u3057\u305f\u3044\u65b9\u306f<a href=\"https:\/\/deha.co.jp\/contact\/\" target=\"_blank\" rel=\"noreferrer noopener\">\u3053\u3061\u3089<\/a>\u304b\u3089\u3054\u6c17\u8efd\u306b\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p>\u25bc deha\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u3078\u306e\u7c21\u5358\u898b\u7a4d\u3082\u308a\u306e\u4f9d\u983c\u306f<a href=\"https:\/\/deha.co.jp\/contact\" target=\"_blank\" rel=\"noreferrer noopener\">\u3053\u3061\u3089<\/a><\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-layout-1 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<div class=\"wp-block-group alignwide is-layout-flow wp-block-group-is-layout-flow\"><div class=\"wp-block-group__inner-container\"><\/div><\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>PHP\u306e\u4eba\u6c17\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30afLaravel\u3067\u306fWeb\u30b5\u30a4\u30c8\u306e\u7ba1\u7406\u753b\u9762\u3092\u958b\u767a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u958b\u767a\u306e\u624b\u9806\u306b\u95a2\u3057\u3066\u306f\u4ee5\u4e0b\u306e\u8a18\u4e8b\u306b\u3066\u5177\u4f53\u7684\u306b\u7d39\u4ecb\u3092\u3057\u3066\u3044\u304d\u307e\u3057\u305f\u3002 Laravel\uff08API\uff09\u3068Nuxt.js\u306e\u9023\u643a\u3092\u884c\u3046\u3010Laravel6+Nuxt.js\u3067\u4f5c\u308b\u7ba1\u7406\u753b\u9762\u3011 Cookie\u306b\u3088\u308bAPI\u7d4c\u7531\u306e\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u6a5f\u80fd\u3092\u4f5c\u308b\u3010Laravel6\u3068Nuxt.js\u3067\u4f5c\u308b\u7ba1\u7406\u753b\u9762\u3011 Nuxt.js+Vuetify\u3068Laravel\u3067CRUD\u3092\u4f5c\u308b \u3055\u3089\u306b\u958b\u767a\u5f8c\u306e\u30c7\u30d7\u30ed\u30a4\u306e\u624b\u9806\u306f\u4ee5\u4e0b\u3067\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3057\u305f\u3002 Heroku+Laravel+MySQL\u3092\u72ec\u81ea\u30c9\u30e1\u30a4\u30f3\u3067\u516c\u958b\u3059\u308b Nuxt.js\u3092SSR\u30e2\u30fc\u30c9\u3067Heroku\u306b\u30c7\u30d7\u30ed\u30a4\u3057\u3066\u516c\u958b\u3059\u308b \u3053\u306e\u8a18\u4e8b\u3067\u306fPHPUnit\u3067Laravel\u306eAPI\u30c6\u30b9\u30c8\u3092\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u3066\u3044\u307e\u3059\u3002 Laravel\u3092\u4f7f\u3063\u3066\u69cb\u7bc9\u3092\u3057\u305f\u3044\u65b9 Web\u30b5\u30a4\u30c8\u69cb\u7bc9\u306e\u5177\u4f53\u7684\u306a\u624b\u6cd5\u304c\u77e5\u308a\u305f\u3044\u65b9 \u306b\u304a\u3059\u3059\u3081\u306e\u8a18\u4e8b\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3092\u8aad\u3081\u3070\u3044\u3088\u3044\u3088Laravel\u3067\u958b\u767a\u3057\u305f\u7ba1\u7406\u753b\u9762\u3092\u30ea\u30ea\u30fc\u30b9\u3059\u308b\u6e96\u5099\u304c\u3067\u304d\u307e\u3059\u3088\u3002<\/p>\n","protected":false},"author":2,"featured_media":4818,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[436,19],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Laravel+PHPUnit\u3067\u8a8d\u8a3c\u4ed8\u304dAPI\u306e\u30c6\u30b9\u30c8\u3092\u884c\u3046 - DEHA Magazine<\/title>\n<meta name=\"description\" content=\"\u30d9\u30c8\u30ca\u30e0\u6280\u8853\u8005\u96c6\u56e3DEHA\u304c\u304a\u5c4a\u3051\u3059\u308b\u30aa\u30d5\u30b7\u30e7\u30a2\u958b\u767a\u60c5\u5831\u30e1\u30c7\u30a3\u30a2\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/deha.co.jp\/magazine\/laravel-phpunit\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Laravel+PHPUnit\u3067\u8a8d\u8a3c\u4ed8\u304dAPI\u306e\u30c6\u30b9\u30c8\u3092\u884c\u3046 - DEHA Magazine\" \/>\n<meta property=\"og:description\" content=\"\u30d9\u30c8\u30ca\u30e0\u6280\u8853\u8005\u96c6\u56e3DEHA\u304c\u304a\u5c4a\u3051\u3059\u308b\u30aa\u30d5\u30b7\u30e7\u30a2\u958b\u767a\u60c5\u5831\u30e1\u30c7\u30a3\u30a2\" \/>\n<meta property=\"og:url\" content=\"https:\/\/deha.co.jp\/magazine\/laravel-phpunit\/\" \/>\n<meta property=\"og:site_name\" content=\"DEHA Magazine\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-23T04:50:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-07-23T16:36:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2020\/09\/logo5.001.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"569\" \/>\n\t<meta property=\"og:image:height\" content=\"427\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Mai Tran\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mai Tran\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/deha.co.jp\/magazine\/laravel-phpunit\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/deha.co.jp\/magazine\/laravel-phpunit\/\"},\"author\":{\"name\":\"Mai Tran\",\"@id\":\"https:\/\/deha.co.jp\/magazine\/#\/schema\/person\/301963170c966f39bbe2f7914450e1f9\"},\"headline\":\"Laravel+PHPUnit\u3067\u8a8d\u8a3c\u4ed8\u304dAPI\u306e\u30c6\u30b9\u30c8\u3092\u884c\u3046\",\"datePublished\":\"2020-09-23T04:50:55+00:00\",\"dateModified\":\"2021-07-23T16:36:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/deha.co.jp\/magazine\/laravel-phpunit\/\"},\"wordCount\":95,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/deha.co.jp\/magazine\/#organization\"},\"articleSection\":[\"Laravel\",\"\u30b7\u30b9\u30c6\u30e0\u958b\u767a\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/deha.co.jp\/magazine\/laravel-phpunit\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/deha.co.jp\/magazine\/laravel-phpunit\/\",\"url\":\"https:\/\/deha.co.jp\/magazine\/laravel-phpunit\/\",\"name\":\"Laravel+PHPUnit\u3067\u8a8d\u8a3c\u4ed8\u304dAPI\u306e\u30c6\u30b9\u30c8\u3092\u884c\u3046 - DEHA Magazine\",\"isPartOf\":{\"@id\":\"https:\/\/deha.co.jp\/magazine\/#website\"},\"datePublished\":\"2020-09-23T04:50:55+00:00\",\"dateModified\":\"2021-07-23T16:36:37+00:00\",\"description\":\"\u30d9\u30c8\u30ca\u30e0\u6280\u8853\u8005\u96c6\u56e3DEHA\u304c\u304a\u5c4a\u3051\u3059\u308b\u30aa\u30d5\u30b7\u30e7\u30a2\u958b\u767a\u60c5\u5831\u30e1\u30c7\u30a3\u30a2\",\"breadcrumb\":{\"@id\":\"https:\/\/deha.co.jp\/magazine\/laravel-phpunit\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/deha.co.jp\/magazine\/laravel-phpunit\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/deha.co.jp\/magazine\/laravel-phpunit\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/deha.co.jp\/magazine\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel+PHPUnit\u3067\u8a8d\u8a3c\u4ed8\u304dAPI\u306e\u30c6\u30b9\u30c8\u3092\u884c\u3046\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/deha.co.jp\/magazine\/#website\",\"url\":\"https:\/\/deha.co.jp\/magazine\/\",\"name\":\"DEHA Magazine\",\"description\":\"DEHA\u304c\u304a\u5c4a\u3051\u3059\u308b\u30aa\u30d5\u30b7\u30e7\u30a2\u958b\u767a\u60c5\u5831\u30e1\u30c7\u30a3\u30a2\",\"publisher\":{\"@id\":\"https:\/\/deha.co.jp\/magazine\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/deha.co.jp\/magazine\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/deha.co.jp\/magazine\/#organization\",\"name\":\"Deha Magazine\",\"url\":\"https:\/\/deha.co.jp\/magazine\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/deha.co.jp\/magazine\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2025\/06\/DEHA-Solutions-Site-icon.png\",\"contentUrl\":\"https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2025\/06\/DEHA-Solutions-Site-icon.png\",\"width\":780,\"height\":780,\"caption\":\"Deha Magazine\"},\"image\":{\"@id\":\"https:\/\/deha.co.jp\/magazine\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/deha.co.jp\/magazine\/#\/schema\/person\/301963170c966f39bbe2f7914450e1f9\",\"name\":\"Mai Tran\",\"sameAs\":[\"https:\/\/deha.co.jp\"],\"url\":\"https:\/\/deha.co.jp\/magazine\/author\/maitt\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Laravel+PHPUnit\u3067\u8a8d\u8a3c\u4ed8\u304dAPI\u306e\u30c6\u30b9\u30c8\u3092\u884c\u3046 - DEHA Magazine","description":"\u30d9\u30c8\u30ca\u30e0\u6280\u8853\u8005\u96c6\u56e3DEHA\u304c\u304a\u5c4a\u3051\u3059\u308b\u30aa\u30d5\u30b7\u30e7\u30a2\u958b\u767a\u60c5\u5831\u30e1\u30c7\u30a3\u30a2","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/deha.co.jp\/magazine\/laravel-phpunit\/","og_locale":"en_US","og_type":"article","og_title":"Laravel+PHPUnit\u3067\u8a8d\u8a3c\u4ed8\u304dAPI\u306e\u30c6\u30b9\u30c8\u3092\u884c\u3046 - DEHA Magazine","og_description":"\u30d9\u30c8\u30ca\u30e0\u6280\u8853\u8005\u96c6\u56e3DEHA\u304c\u304a\u5c4a\u3051\u3059\u308b\u30aa\u30d5\u30b7\u30e7\u30a2\u958b\u767a\u60c5\u5831\u30e1\u30c7\u30a3\u30a2","og_url":"https:\/\/deha.co.jp\/magazine\/laravel-phpunit\/","og_site_name":"DEHA Magazine","article_published_time":"2020-09-23T04:50:55+00:00","article_modified_time":"2021-07-23T16:36:37+00:00","og_image":[{"width":569,"height":427,"url":"https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2020\/09\/logo5.001.jpeg","type":"image\/jpeg"}],"author":"Mai Tran","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Mai Tran","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/deha.co.jp\/magazine\/laravel-phpunit\/#article","isPartOf":{"@id":"https:\/\/deha.co.jp\/magazine\/laravel-phpunit\/"},"author":{"name":"Mai Tran","@id":"https:\/\/deha.co.jp\/magazine\/#\/schema\/person\/301963170c966f39bbe2f7914450e1f9"},"headline":"Laravel+PHPUnit\u3067\u8a8d\u8a3c\u4ed8\u304dAPI\u306e\u30c6\u30b9\u30c8\u3092\u884c\u3046","datePublished":"2020-09-23T04:50:55+00:00","dateModified":"2021-07-23T16:36:37+00:00","mainEntityOfPage":{"@id":"https:\/\/deha.co.jp\/magazine\/laravel-phpunit\/"},"wordCount":95,"commentCount":0,"publisher":{"@id":"https:\/\/deha.co.jp\/magazine\/#organization"},"articleSection":["Laravel","\u30b7\u30b9\u30c6\u30e0\u958b\u767a"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/deha.co.jp\/magazine\/laravel-phpunit\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/deha.co.jp\/magazine\/laravel-phpunit\/","url":"https:\/\/deha.co.jp\/magazine\/laravel-phpunit\/","name":"Laravel+PHPUnit\u3067\u8a8d\u8a3c\u4ed8\u304dAPI\u306e\u30c6\u30b9\u30c8\u3092\u884c\u3046 - DEHA Magazine","isPartOf":{"@id":"https:\/\/deha.co.jp\/magazine\/#website"},"datePublished":"2020-09-23T04:50:55+00:00","dateModified":"2021-07-23T16:36:37+00:00","description":"\u30d9\u30c8\u30ca\u30e0\u6280\u8853\u8005\u96c6\u56e3DEHA\u304c\u304a\u5c4a\u3051\u3059\u308b\u30aa\u30d5\u30b7\u30e7\u30a2\u958b\u767a\u60c5\u5831\u30e1\u30c7\u30a3\u30a2","breadcrumb":{"@id":"https:\/\/deha.co.jp\/magazine\/laravel-phpunit\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/deha.co.jp\/magazine\/laravel-phpunit\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/deha.co.jp\/magazine\/laravel-phpunit\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/deha.co.jp\/magazine\/"},{"@type":"ListItem","position":2,"name":"Laravel+PHPUnit\u3067\u8a8d\u8a3c\u4ed8\u304dAPI\u306e\u30c6\u30b9\u30c8\u3092\u884c\u3046"}]},{"@type":"WebSite","@id":"https:\/\/deha.co.jp\/magazine\/#website","url":"https:\/\/deha.co.jp\/magazine\/","name":"DEHA Magazine","description":"DEHA\u304c\u304a\u5c4a\u3051\u3059\u308b\u30aa\u30d5\u30b7\u30e7\u30a2\u958b\u767a\u60c5\u5831\u30e1\u30c7\u30a3\u30a2","publisher":{"@id":"https:\/\/deha.co.jp\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/deha.co.jp\/magazine\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/deha.co.jp\/magazine\/#organization","name":"Deha Magazine","url":"https:\/\/deha.co.jp\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/deha.co.jp\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2025\/06\/DEHA-Solutions-Site-icon.png","contentUrl":"https:\/\/deha.co.jp\/magazine\/wp-content\/uploads\/2025\/06\/DEHA-Solutions-Site-icon.png","width":780,"height":780,"caption":"Deha Magazine"},"image":{"@id":"https:\/\/deha.co.jp\/magazine\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/deha.co.jp\/magazine\/#\/schema\/person\/301963170c966f39bbe2f7914450e1f9","name":"Mai Tran","sameAs":["https:\/\/deha.co.jp"],"url":"https:\/\/deha.co.jp\/magazine\/author\/maitt\/"}]}},"_links":{"self":[{"href":"https:\/\/deha.co.jp\/magazine\/wp-json\/wp\/v2\/posts\/4788"}],"collection":[{"href":"https:\/\/deha.co.jp\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/deha.co.jp\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/deha.co.jp\/magazine\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/deha.co.jp\/magazine\/wp-json\/wp\/v2\/comments?post=4788"}],"version-history":[{"count":32,"href":"https:\/\/deha.co.jp\/magazine\/wp-json\/wp\/v2\/posts\/4788\/revisions"}],"predecessor-version":[{"id":6124,"href":"https:\/\/deha.co.jp\/magazine\/wp-json\/wp\/v2\/posts\/4788\/revisions\/6124"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/deha.co.jp\/magazine\/wp-json\/wp\/v2\/media\/4818"}],"wp:attachment":[{"href":"https:\/\/deha.co.jp\/magazine\/wp-json\/wp\/v2\/media?parent=4788"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/deha.co.jp\/magazine\/wp-json\/wp\/v2\/categories?post=4788"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/deha.co.jp\/magazine\/wp-json\/wp\/v2\/tags?post=4788"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}