読者です 読者をやめる 読者になる 読者になる

リア充爆発日記

You don't even know what ria-ju really is.

unit test

poltergeistでテストごとに設定を変更する方法

poltergeistはここにいろんな設定内容の説明が書いてある。 https://github.com/jonleighton/poltergeist#customizationで、今回js_errorsを一部のテストだけfalseにしたかったので、その方法を調べた。何かそれようのメソッドがある感じじゃなかったので、…

parallel_testsでRSpecのテストを高速化

テストが多くなってくると必然的に実行時間が長くなってしまう。 テストの書き方を工夫する余地があるうちはいいけど、それもきつくなってきたらもう後はマシンパワーに頼るしかない。そこでこちらのparallel_testsです。 https://github.com/grosser/parall…

Titanium AlloyのSync Adapterでナイススケルトン2

前回で、サーバサイドとクライアントサイドの分業がしやすくなった!とおもったけど、あれだと1種類のmodelにしか対応できていない。articleの開発は問題なく進められても、author絡みの開発をするには、また別のアダプターをつくらないといけなくなっちゃ…

RSpecのおともにdatabase_cleaner

何かの拍子にテストの一部が通らなくなった。コードを追ってみても原因がわからず、そこそこハマった結果、DBにゴミデータが残っていることが原因だとわかった。きっと実行の途中で止めちゃったりしたんだろう。 また同じようなことが起きたら、きっとこれを…

FactoryGirlでmodelのbefore_createとかを飛ばしたいとき

FactoryGirlに限った話じゃないけど。で、どうするかというとskip_callbackを事前に呼ぶ。 Model.skip_callback(:create, :before, :set_default_status) :set_default_statusは任意のフィルター。 いろいろやってみたけど before_create { self.status = "a…

Rspecでスタブを使ったときのメモ

こんなコードがあったんです。 メールアドレス変更をするときに、ユーザーIDと新メールアドレスとトークンを持つモデルのテストで、トークンがかぶったらマズイからbefore_saveでunique_tokenという、渡されたトークンが既に存在しないか確認するメソッドを…

Railsのrspecが遅いので対応した結果wwwwwwwwwwwwww

rspecで書いているテストが遅い。CPUもめちゃ回る。めちゃ回ってあのスピードか。rspec + guard + spork(spring試したい)で自動テストを回しているので、あまりテストのパフォーマンスが開発に影響することはなかったんだけど、けっこう大きいmodelの修正…

Railsでメール送信系のテストを行うには〜email-spec

会員登録時やパスワードリマインダーなどで発生するメール送信のテストはどうやってするのか調べたところ、email-specというgemが目的にぴったりっぽかった。 その名の通りRSpecとあとはMiniTestとCucumberに対応している。email-specをRSpecに導入するメモ…

PhantomJSとPoltergeistでHeadlessなJavascriptテスト環境を作る

RailsでJavascript/CoffeeScriptをテストするときの決定版(にしたい)!Konachaの続き。最初はブラウザリロードすればいいんだから、わざわざやらなくていいか、と思ったけど、当該環境がファントムとかポルターガイストとか中二病の諸症状を悪化させる瘴気…

Android開発するときにテスト絡みで調べたことまとめ

追記系。 デフォのテストは重くてきつすぎるっす Androidのテストツールならこれ!Robolectric導入の儀。 これ以降、ほとんどRobolectricを使う前提の話 画面の遷移 RobolectricでActivityの遷移を確認する方法 フラグなんかも以下のような感じでテストでき…

rspecでroutingのテスト

本当のリア充はクリスマスだからといってむやみにツイートを抑えたり偽装したりしない。通常運転。Rails3+rspec2でWeb APIサーバのpostをテストする方法がよくわからなかった件の続編。今度はAPIサーバ、つまりサブドメイン縛りのリソースに対してroutingの…

JSONArrayでStub!

どういうわけかRobolectricにないっぽい。Android実装があるだけで中身はピュアJavaのはずなので、手作りShadowでもいいと思うんだけど、めんどくさいのでポムった。 <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20090211</version> <scope>test</scope> </dependency> <dependency> <groupId>com.pivotallabs</groupId> <artifactId>robolectric</artifactid></dependency>

mockito1.9.5とpowermock1.5は同時に使えない件について

追記)なんかいろいろわかってないところがあるので、このエントリの内容はペンディング。 powermockなんていらないやい!と思ってたけど、finalなGoogleMapクラスをモックにしないとどうにもテストがままならない事案が発生しまして。で、powermockを以下の…

Paperclip + rail3 + rspec でテストごとに作られたファイルを消す方法

Rails3+paperclipでファイルアップロードの最後で気づいたテストごとにファイルを消す方法。基本的なコンセプトとしては、テスト時だけ保存場所を変えて、テストごとにそのディレクトリ配下をごそっと消す、という流れ。config/environments/test.rb config.…

Rails+rspec+FactoryGirlでのテストが早くなるかもしれないポイント

bcryptを使ってパスワードをハッシュしたUserなんかをFactoryしてるときのケース。production環境と違ってtest環境はハッシュの強度なんてどうでもいいから以下のようにする。config/environments/test.rb require 'bcrypt' silence_warnings do BCrypt::Eng…

Guard+Spork+GrowlでRspecを自動実行する設定

こちらを参考。 http://ruby.railstutorial.org/chapters/static-pages#fnref-3_2このサイトは「これからRailsやります(たいです)!」っていうタイミングだったら全部読んだほうがいいと思うよ。チュートリアルだから読みながら実践力が身につくし英語の勉…

RobolectricでActivityの遷移を確認する方法

ActivityAからActivityBに遷移(?)できていることを確認するテストを書きたかったのでやり方を調べてみるとStartedMatcherってのを使うっぽかった。 http://pivotal.github.com/robolectric/javadoc/com/xtremelabs/robolectric/matchers/StartedMatcher.htm…

Robolectric + ormliteでUnitテスト

や。何もしなくてもよかった。。どうやってやるのが常道なのかなぁ、とか2時間近く調べて、ShadowSQLiteOpenHelperが絡んでくるんだろうな、というところあたりまではわかったけど、具体的にどうするのかわからなかった。が、前述のとおり、結局何もしなくて…

RobolectricでBase64

AndroidではAPI Level8(Android2.2)からBase64が組み込まれているんだけど、RobolectricにはまだShadowがないっぽい。・・・と思ったらgithubのmasterには1ヶ月ほど前に取り込まれてたよう。 https://github.com/pivotal/robolectric/pull/326だけどMavenで…

DataPointの定義でExceptionがでちゃうときの対処法

Theory&DataPoint使ってるよね! なにそれ!?って人はググるかタウンページめくったほうがいいよ!で、こんな感じでnew ObjectThrowsExceptionがthrows exceptionなとき、どうすればいいか迷っちゃう! @DataPoints public static ObjectsThrowsException[…

RobolectricでActionBarSherlockのテストをしようとしてNo implementations match configuration

java.lang.IllegalStateException: No implementations match configuration.もうそろそろ普通に開発させてくれんかね。。で、タウンページをめくってみるとABS本家のgithubが筆頭に。 https://github.com/JakeWharton/ActionBarSherlock/issues/377 When Ac…

java.lang.NoSuchMethodError: org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg/hamcrest/Description;)が出たら

依存関係の設定のところで、JUnitよりhamcrestを上にしよう。そんじゃーね。

Unitテスト時にWebサーバに繋ぎたくなったらmockwebserver

Webサーバとつながないとテストできない。そういうテストしたいときってあるじゃない。いや、そういうときは設計を見直すべきときも大いにあると思うけど、いやこれ絶対つながないと無理だって!という時にはこれ。 http://code.google.com/p/mockwebserver/…