SiNBLOG

140文字に入らないことを、極稀に書くBlog

Slim3 Source Code Reading No10 tester

Slim3 Source Code Reading #10 - ChugokuGTUG

に参加してきました!


今回も@ttyokoyama 殿と2人だったので、まったりと進みました。
まぁ、他の方が参加していても、まったり進むのですがw

T.Yokoyamaのブログ: Slim3 Source Code Reading #10


今回も前回に引き続き、testerです。
前回はAppEngineTesterでしたが、今回はControllerTesterです。

ControllerTesterは、ServletTesterを継承しており、ServletTesterはAppEngineTesterを継承しています。
役割も名前の通りです。
また、中身も初期化をしているのと、テスト時に便利なメソッドがあるだけで、何か特殊なことをしている感じには見えませんでした。


しかし、やたらとハマったのが・・・。

ServletTester#addBlobKey()

Blobstoreをテストするためにあるんだろうけど、どうやって使うんだろう?と横山殿と試行錯誤。
で、上記の横山殿のBlogにもある通り、SDK側のソースと型があってなくてエラーになるぞ?と。
実はこの時、僕の方ではエラーにはなってなかったのですが、期待通りの動作にもなっていなかったので、そもそも僕の使い方が違ってるのかな?と思いながら試行錯誤。


その時にtwitterで泣きながら質問したら、ひが殿が教えて下さいました!

教えていただいた通り、デモを見てみると・・・。

Google Code Archive - Long-term storage for Google Code Project Hosting.


public class UploadControllerTest extends ControllerTestCase {

@Test
public void run() throws Exception {
String keyString = "hoge";
tester.addBlobKey("formFile", keyString);
tester.start("/blobstore/upload");
UploadController controller = tester.getController();
assertThat(controller, is(notNullValue()));
assertThat(tester.isRedirect(), is(true));
assertThat(tester.getDestinationPath(), is("/blobstore/"));
Key key = Datastore.createKey(Blobstore.class, keyString);
Datastore.get(key);
}
}

普通に使ってましたね!w
でも、"addBlobKey"でぐぐってもほとんどHitしなかったので、あんまり知れ渡っていないようです。
今、ぐぐると僕と横山殿のBlogが1ページ目に出てきますねw


その後、帰宅後に調べていて分かったのですが、GAEのSDK1.6.2で、型が変わったようです。
横山殿は1.6.2で動かしていたので、エラーになっていたわけですね。
既に1.6.3も出てきていますが、今のところslim3は1.6.0準拠です。
そろそろ、新しいのが出るのかな?と思いながら、待っていますw