Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
OrganizationEventAdvent CalendarQiitadon (β)
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

More than 1 year has passed since last update.


Laravel Snippets for a fast TDD workflow

A Page I refer to when I do TDD development with Laravel. Cover most of my use cases without going to the official docs. Will be updated continously.

Handy Artisan Commands

# Create Migrations
php artisan make:migration create_users_table --create=users
php artisan make:migration add_votes_to_users_table --table=users

# Create a test in the Feature directory...
php artisan make:test PurchaseTicketsTest

# Create a test in the Unit directory...
php artisan make:test UserTest --unit

# Laravel Dusk Testing Commands

php artisan dusk:make LoginTest

composer require --dev laravel/dusk
php artisan dusk:install
php artisan dusk

# Create a model and migrations
php artisan make:model Photo --migration

# Create a factory
php artisan make:factory PhotoFactory --model=Photo

# Create a Seeder
php artisan make:seeder UsersTableSeeder

# Create a Resource Controller
php artisan make:controller PhotosController --resource

# Create a Resource Controller with methods type hinted for route-model binding
php artisan make:controller PhotosController --resource --model=Photo

php artisan make:controller API/PhotosController --api
php artisan make:controller PhotosController --api

# Create a Policy
php artisan make:policy PostPolicy --model=Post

# Commands for Backpack (Copied from backpack documentation website)

# STEP 1. create a model, a request and a controller for the admin panel
php artisan backpack:crud tag #use singular, not plural

# STEP 2. add a route for this admin panel to routes/backpack/custom.php
php artisan backpack:base:add-custom-route "CRUD::resource('tag', 'TagCrudController');"

# STEP 3. add sidebar item to resources/views/vendor/backpack/base/inc/sidebar_content.blade.php
php artisan backpack:base:add-sidebar-content "<li><a href='{{ backpack_url('tag') }}'><i class='fa fa-tag'></i> <span>Tags</span></a></li>"

Feature & Unit Tests References

Factories Snippets

Defining Factories

$factory->state(App\User::class, 'delinquent', [
    'account_status' => 'delinquent',

$factory->state(App\User::class, 'address', function ($faker) {
    return [
        'address' => $faker->address,

Using Factories

$user = factory(App\User::class)->make();

$users = factory(App\User::class, 3)->make();

$users = factory(App\User::class, 5)->states('delinquent')->make();

$users = factory(App\User::class, 5)->states('premium', 'delinquent')->make();

$user = factory(App\User::class)->make([
    'name' => 'Abigail',

// Make and save to database
$user = factory(App\User::class)->create();

Making Factories

# https://github.com/JeffreyWay/council/blob/master/database/factories/ModelFactory.php

$factory->define(App\User::class, function (Faker\Generator $faker) {
    static $password;
    return [
        'name' => $faker->name,
        'username' => $faker->unique()->userName,
        'email' => $faker->unique()->safeEmail,
        'password' => $password ?: $password = bcrypt('secret'),
        'remember_token' => str_random(10),
        'confirmed' => true


https://github.com/adamwathan/laracon2017 (Controller Design)

https://github.com/ziming/is439-iot-power/blob/master/app/Http/Controllers/Api/ApiController.php (A good ApiController Super class)

Resource Controller

Verb URI Action Route Name
GET /photos index photos.index
GET /photos/create create photos.create
POST /photos store photos.store
GET /photos/{photo} show photos.show
GET /photos/{photo}/edit edit photos.edit
PUT/PATCH /photos/{photo} update photos.update
DELETE /photos/{photo} destroy photos.destroy
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Help us understand the problem. What is going on with this article?