 <p>This may be further off topic than you want to go but <a href="http://nsubstitute.github.io/" rel="nofollow">NSubstitute</a> is a great mocking library that handles this very well. In NSubstitute it's just:</p> <pre><code> var mock = Substitute.For&lt;IInterface&gt;(); var obj = new MyClass(); await obj.Run(); Received.InOrder(() =&gt; { mock.MethodOne("foo"); mock.MethodTwo("foo"); }); </code></pre>