FakerとSilexでAPIのテスト環境をつくる

少し前にAPIを使ったアプリケーションの開発をする際に、 SilexとFakerとSymfonyのRouteCollectionを使うと良い感じにさくっとテスト用のAPI環境が作れたのでメモです。

Faker

https://github.com/fzaninotto/Faker

テストデータを生成してくれます。

ドキュメントを見ればだいたいどんなテストデータが生成できるのか説明されていますが、 結構な数のテストデータの形式が準備されています。

また、準備されていないテストデータの形式があったとしても addProviderを使うことでテストデータのフォーマットを拡張することができます。

LaravelでもmodelfactoryにFakerが使われています。

http://laravel.com/docs/master/testing#model-factories

(laravelで拡張してみた内容を1つ前に書いているので参考までに...)
http://blog.milds.net/2015/08/laravelfaker.html

Silex

http://silex.sensiolabs.org/

Symfonyベースのマイクロフレームワークで個人的には必要最低限のものが準備されている感じと、 ServiceProviderで拡張できるので好きです。

最近だとECCUBE3でSilexが採用されているので知っている人も増えてくるんじゃないかと思います。
https://github.com/EC-CUBE/ec-cube

サンプル

https://github.com/ootatter/faker_with_silex_sample

ルーティングはSymfonyのRouteCollectionを使ってYamlで定義してます。 他のドキュメント等で定義した内容をそのまま持ってこれたりしたので管理し易い方法ではないかと思います。

サンプルではFakerのaddProviderを使って一部拡張してみてます。

Fakerでダミーを返している箇所をORMで書き換えてそのままAPIが出来上がりということもありかもしれません。