Guiceが生成するインスタンスをMockitoでspyする

Play FrameworkではGoogle Guiceが標準で採用されている。 統合テストを書いているとGuiceが生成するインスタンスをspyに差し替えたくなる時がごく稀にある。 この場合、Injector.getInstance()が返したインスタンスをspyにするのではなく、Injector.getInst…

「単体テストの考え方/使い方」で得た知見をレガシーコードの多いプロジェクトで実践してみた感想

本書の感想だが、Railsでの開発で最初にRSpecの使い方を学んだきりテストについて全く学んでこなかった身としては、テストコードを書く際の指針、プラクティスがはっきりし、非常によい内容だった。 その上で、学んだ内容を実際にプロジェクトで実践しようと…

「単体テストの考え方/使い方」第3部, 4部を読んで考えたこと

特に後半は細かいプラクティスの話が多くなり、どうしても人によって「そうかな?」と思わされる内容も多そうだった。 とはいえ大事な考え方も書かれているので一読の価値は間違いなくあると感じた。 前回 p-kino.hatenablog.com repositoryのインターフェイ…

「単体テストの考え方/使い方」第2部を読んで考えたこと

前回 p-kino.hatenablog.com レガシーコードのテストピラミッドの歪み つまり、E2Eテストが持つテスト・ケースをもっとも少なくし、統合テストが持つテスト・ケースをE2Eテストより多くしながらも、単体テストよりも少なくし、単体テストが持つテスト・ケー…

「単体テストの考え方/使い方」第1部を読んで考えたこと

最近テストコードの保守が足を引っ張ってしまっている気がしたので、一度テストについて学習する機会をとるべきだと思い、「単体テストの考え方/使い方」を読んでいる。 主に書く言語がRubyからScalaに変わり、テストではなく型で保証させるべき事柄も出てき…

AkkaのClassic ActorにGuiceを使ってDIする方法

Classic Actorを今時使っているところはあまり無いと思うが、現在携わっているプロジェクトでは既に多くのActorがClassicで書かれてしまっており、中々完全に移行できない。 このプロジェクトはPlay Frameworkで実装されているWebアプリでバッチ処理の定期実…

RubyからScalaに移る上で大事だったこと

前職ではRuby on Railsでの開発がメインだったが、転職してからはScala/Play Frameworkでの開発が主になり、それに伴い開発の手法, メンタルモデルも大きく変わった。 それに適応していくために特に大事だったと思うことを書く。 型駆動開発で進める Scalaは…

「ドメイン駆動設計 モデリング/実装ガイド」を読んだ

little-hands.booth.pm 読んだきっかけ 自分の書いているコードに対してある程度「これで問題ない」という確信が持てない状態がそれなりにストレスになると気付いたので読んだ。 今の職場に来てから、新機能の内部設計および開発を一任されるなど、以前より…

Play Frameworkのテスト実行中にDBのコネクションが枯渇する

概要 背景 Play Frameworkのコネクションプールの動作 対策 GuiceOneAppPerSuiteなど用意されたtraitの枠組みに乗っかる テストケースごとにModuleをoverrideしたい場合 概要 Play Frameworkのテストコードでplay.api.Applicationのインスタンスを生成したら…

for-comprehensionをうまく使うために必要そうだと思ったこと

新しい仕事に入り、1週間が経過しました。 私としては有給消化中にコップ本を読んでおけば事前準備としてはよくやった方ではないかと思っていたのですが、Play FrameworkやDBとのやりとりに使っているScalikeJDBCなど、新しく知るべきことはたくさんあり、逆…

ドワンゴ社のScala研修テキストを読む前に知っておきたかった高階関数への関数オブジェクトの渡し方のパターン

Scalaでは関数リテラルを様々な形で書けますが、入門向けの資料であるドワンゴ社のScala研修テキストでは具体的にどのような書き方ができるのかは解説されていません。 にも関わらずそれぞれの書き方が説明なしに登場するので「高階関数に渡す関数の書き方は…