title: Efficiently composing promise tests
body: <p>I find myself often writing tests for async APIs like this:</p>
  
  <pre><code>beforeEach(function(done) {
    setup()
    .then(function(val) {
      return setup2();
    })
    .done(done, done);
  });
  
  it('should test something', function(done) {
    promiseFunction
    .then(function(val) {
      expect(val).to.be.something;
    })
    .done(done, done);
  });
  </code></pre>
  
  <p>Which seems pretty straightforward, except for the beforeEach function: if setup2 returns a promise, then done will be called with a value, which it doesn't like.  So I end up having to write:</p>
  
  <pre><code>.done(function() { done(); }, done)
  </code></pre>
  
  <p>which is all well and good, but I'm wondering if there's a more compact way to do this (yes, I'm lazy!).  Like</p>
  
  <pre><code>.catch(done) //handle fail
  .then(null)  //strip the promise value
  .then(done)  //handle success
  </code></pre>
  
  <p>but <code>then</code> requires a function.  I know a trivial solution is to write myself another function:</p>
  
  <pre><code>function noParam(done) { done(); }
  </code></pre>
  
  <p>and use:</p>
  
  <pre><code>.done(noParam(done), done);
  </code></pre>
  
  <p>I'm just wondering if there's a better way to compose this generally or a way to use existing API functions.</p>