 <p>The style you described is not common partially because of the issues you mentioned. If your trying to achieve a functional style, you would be better off just using functions with type aliases.</p> <pre><code>// Alias the function type to a meaningful name type FetchFeed = String =&gt; List[Feed] // Declaring an implementation val fetchFeed: FetchFeed = url =&gt; ... // Nice type name to work with class MyWork(fetchFeed: FetchFeed) // Declaring a mock is still easy new MyWork(_ =&gt; List(new Feed)) </code></pre>