2020.01.24目次APIをモック化したい設計面での前提事項Repository層サービスコンテナーMockeryを使用したテストRepositoryとServiceProviderの実装イメージモック化する方法サンプルコード参考サイトまとめAPIをモック化したいLaravelでテストコードを書く時に、APIをPHPUnitのMockeryを使用してモック化したい時がありましたので備忘録として残しておきたいと思います!既存のコードで、API部分は一切テストが書かれていない・・・。Model状態で、メソッド内でnewしまくっているなど、めちゃくちゃ依存性が高いものは、テストがほとんど書けないですし、一部改修するだけでも非常に苦労が多くなります。今回掲載しているテストコードの設計面で前提となる部分を掲載しておきます!まずDAOやAPIへアクセスする部分は、Repository層で隠蔽しています。RepositoryのfetchCustomersを呼んだら、customersが取得できるとします。Repository層で隠蔽することで、customersをデータベースからとってきているのか、APIから取得してきているのかは意識しなくて良いような感じになります。仮に今までcustomersをデータベースから取得してきていたものを、APIから取得するように変わっても、各サービス層をRepositoryのInterfaceへ依存させておけば、簡単に切り替えられます。以下は実装イメージになります。}}サービスコンテナーの詳細は以下の公式サイトに詳しく掲載されています。Laravelreadouble.comMockeryを使用したテストここでは、課金のキャンセル処理のテストを書く設定にしたいと思います。削除など)と決済サービスAPIなどのキャンセル処理が必要だとします。この決済サービスAPIのキャンセル処理があるために、外部サービスに依存してしまいテストが書けません。そのためこの部分をモック化したいと思います。RepositoryとServiceProviderの実装イメージ以下が課金のキャンセル処理のRepositoryとServiceProviderの実装イメージになります。DBのcancel処理結果などをassertする。}}※$this->app->bindではなくて、$this->instanceの方がいいかもなので今度試してみたら更新しておこうと思います。参考サイト以下は参考サイトになります。Injection)によって、必要なインスタンスを生成するようになっています。インスタンスを注入してくれるこの機能は非常に便利なのですが、テストを書いている際に困ることがあります。本記事ではタイトルにもある通り、Laravelの知識ゼロから基本をマスターしていくチュートリアルになります。Composerをインストールする方法はとても簡単です。Laravelでredirectをする時に、routeで名前を指定して逆引きしたいときがあります。前回のチュートリアルで環境構築後、Laravelトップページが表示されるところまで進めることができました。今回は、Laravelのルーティングを学習していきます。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。ホームPHPLaravel検索kouフリーランスのプログラマーです。・フリーランスエンジニアインフラ構築からシステム開発まで、ご相談を受け付けています。PHP/Laravel、Vue.js/Nuxt.js、React/Next、クリーンアーキテクチャ、マイクロサービスなどの業務経験があります。その他、Python/Django、Java/SpringBoot、JavaScript、WordPressなどの経験もあります。お仕事のご依頼は、メニューのお問い合わせからお願いします。検索kouフリーランスのプログラマーです。・フリーランスエンジニアインフラ構築からシステム開発まで、ご相談を受け付けています。PHP/Laravel、Vue.js/Nuxt.js、React/Next、クリーンアーキテクチャ、マイクロサービスなどの業務経験があります。その他、Python/Django、Java/SpringBoot、JavaScript、WordPressなどの経験もあります。お仕事のご依頼は、メニューのお問い合わせからお願いします。APIHerokuHomebrewHTMLJavaJavaScriptjQueryLaravelLinuxMacMezzanineMySQLNodeNuxtPC紹介PHPPostgreSQLPythonReactRedisSalesforcescaffoldSeleniumShellslackSQLiteTerraformTypeScriptUbuntuVirtualBoxVue.jsVultrWordPressXcode。