slim3ではGAEの環境に依存するような単体テストもかなり簡単に行う事ができます。例えば、Bigtableへのアクセスはテストの実行毎にリセットされる、グローバルトランザクションに対応など至れりつくせりです。 ところが、画像を加工してサムネイルを作る時などに使用する ImagesServiceですが、これを単体テストで実行しようとすると例外が発生します。内部的には、画像の作成や一部の軽い処理はImplで行っているようですが、拡大縮小などの変換処理は各アプリでやるのではなく、外部サービスとして呼び出しているようです。これらのテスト環境でのエミュレートは、org.slim3.tester.AppEngineTesterのmakeSyncCallで行っていますので、ここを少しカスタマイズすることでImagesServiceもエミュレートできるようになります。 以下、簡単なサンプルになります。