かきノート

Laravel を使ったオープンソースの test ディレクトリ構成を見てみよう!

November 21, 2020 • ☕️ 3 min read

Laravel の test ディレクトリの構成をどうしよう?
と迷ったので、Laravel を使ったオープンソースを参考にする事にした。

Koel

https://github.com/koel/koel

└─tests
    ├─blobs
    │  ├─itunes
    │  ├─lastfm
    │  ├─rules
    │  └─youtube
    ├─Feature
    │  └─ObjectStorage
    ├─Integration
    │  ├─Factories
    │  ├─Listeners
    │  ├─Models
    │  ├─Repositories
    │  └─Services
    ├─songs
    │  ├─.hidden
    │  └─subdir
    ├─Traits
    └─Unit
        ├─Http
        │  └─Middleware
        ├─Jobs
        ├─Services
        └─Stubs

laracom

https://github.com/jsdecena/laracom

└─tests
    ├─Feature
    │  ├─Admin
    │  │  ├─Addresses
    │  │  ├─Attributes
    │  │  ├─AttributeValues
    │  │  ├─Brands
    │  │  ├─Categories
    │  │  ├─Cities
    │  │  ├─Countries
    │  │  ├─Courier
    │  │  ├─Customers
    │  │  ├─Dashboard
    │  │  ├─Employees
    │  │  ├─Orders
    │  │  ├─OrderStatus
    │  │  ├─Permissions
    │  │  ├─Products
    │  │  ├─Provinces
    │  │  └─Roles
    │  └─Front
    │      ├─Accounts
    │      ├─Cart
    │      ├─Categories
    │      ├─Checkout
    │      ├─CustomerAddresses
    │      ├─Home
    │      ├─Products
    │      └─States
    └─Unit
        ├─Address
        ├─Attributes
        ├─AttributeValues
        ├─Brands
        ├─Cart
        ├─Categories
        ├─Checkout
        ├─Cities
        ├─Countries
        ├─Courier
        ├─Customers
        ├─Employees
        ├─OrderAddress
        ├─OrderDetails
        ├─Orders
        ├─OrderStatuses
        ├─Permissions
        ├─ProductAttributeCombinations
        ├─ProductAttributes
        ├─Products
        ├─Provinces
        └─Roles

MONICA

https://github.com/monicahq/monicaa

└─tests
    ├─Api
    │  ├─Account
    │  │  └─Activity
    │  ├─Authentication
    │  ├─Contact
    │  ├─ContactField
    │  ├─DAV
    │  └─Settings
    ├─Browser
    │  ├─Auth
    │  ├─console
    │  ├─Feature
    │  ├─Pages
    │  │  └─Settings
    │  ├─screenshots
    │  └─Settings
    ├─Commands
    │  └─Scheduling
    ├─cypress
    │  ├─fixtures
    │  ├─integration
    │  │  ├─auth
    │  │  ├─contacts
    │  │  ├─journal
    │  │  └─settings
    │  ├─plugins
    │  └─support
    │      └─helpers
    ├─Feature
    │  └─Authentication
    ├─Fixtures
    │  └─Services
    │      ├─Account
    │      │  └─Place
    │      └─Instance
    │          ├─Geolocalization
    │          └─Weather
    ├─stubs
    ├─Traits
    └─Unit
        ├─Controllers
        │  ├─Account
        │  │  └─LifeEvent
        │  ├─Auth
        │  ├─Contact
        │  └─Settings
        ├─Events
        ├─Helpers
        ├─Jobs
        │  └─Reminder
        ├─Models
        ├─Services
        │  ├─Account
        │  │  ├─Activity
        │  │  │  ├─ActivityType
        │  │  │  └─ActivityTypeCategory
        │  │  ├─Company
        │  │  ├─Gender
        │  │  ├─LifeEvent
        │  │  │  └─LifeEventType
        │  │  ├─Photo
        │  │  ├─Place
        │  │  └─Settings
        │  ├─Auth
        │  ├─Contact
        │  │  ├─Address
        │  │  ├─Avatar
        │  │  ├─Call
        │  │  ├─Contact
        │  │  ├─ContactField
        │  │  ├─Conversation
        │  │  ├─Description
        │  │  ├─Document
        │  │  ├─Gift
        │  │  ├─Label
        │  │  ├─LifeEvent
        │  │  ├─Occupation
        │  │  ├─Relationship
        │  │  ├─Reminder
        │  │  └─Tag
        │  ├─Instance
        │  │  ├─AuditLog
        │  │  ├─Geolocalization
        │  │  └─Weather
        │  ├─Task
        │  ├─User
        │  └─VCard
        └─Traits

vuedo

https://github.com/Vuedo/vuedo

└─tests
    ├─api
    ├─integration
    └─unit

結論

「単体でテストする場合は(メソッド1つ分) unit に階層を分けてブチ込む」
「 “いくつかの部品を組み合わせた機能” といっt単位でテストする場合は、Feature 階層に分けてブチ込む」
という方針で行くか。


Relative Posts:

物流エンジニアが本気出して考えた Laravel のアーキテクチャ:リポジトリパターン - 1

November 22, 2020

Laravel の「ファサード」と、デザインパターンの「ファサード」は、単語が同じなだけで全然別のもの?

November 1, 2020

福岡の物流エンジニアが、七転び八起きしたあと九回転び、寝っ転がったまま何かやってる事を垂れ流しているブログ

RotateLinkImg-iconRotateLinkImg-iconRotateLinkImg-iconRotateLinkImg-icon