title: How does work Sinon.JS fake.yields?
body: <p>I just started investigation of Sinon.JS and after some research I stuck with the following two methods and do not know how exactly they are working:</p>
  
  <pre><code>sinon.fake.yields(callback[, value1, ..., valueN]);
  </code></pre>
  
  <p>and </p>
  
  <pre><code>sinon.fake.yieldsAsync(callback[, value1, ..., valueN]);
  </code></pre>
  
  <p>It would be great if somebody explain (or even show some example) how they work and when should I use them. One more important question what is the difference between fake, stub and mock in common?</p>
  
  <p>Thanks in advance!</p>