ユーザーを表すケースクラスとそれを扱うクラスを定義します。後のために普通のクラスとして定義しています。依存しているとテストしにくくなります。注入してほしいオブジェクトとしておくのでした。ここでは定義されていませんが、これが注入してほしいオブジェクトであることを覚えておきます。名前空間トレイトに包みます。後から注入されるべきオブジェクトとして宣言だけしておきます。依存していることを自分型アノテーションで示します。}}最後に、これらのトレイトを継承した環境トレイトを作ります。インスタンス化して保持しておきます。継承するだけでアプリケーション用のコードを書くことができます。トレイトに集まっているのがわかります。mock[UserServiceComponent]}そして、単体テストしたいクラスは実際にインスタンス化して試すとよいでしょう。リンクを置いておきました。これを見るとうまいこと依存性を分離して保管できており、しかもテスト時にもうまくモックできていることがわかります。書いても問題なく動くのだけど、自分型アノテーションを使うのは環境トレイトを作るときに依存性を見やすくすることが目的だろうか。しているトレイトと注入している依存性が一対一に対応するぶん見やすい。見つけたのでそのうち読む。