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
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が出来上がりということもありかもしれません。