ASYNCHRONOUS HOOKS

所有的钩子(before(),after(),beforeEach(),afterEach())可以是同步的也可以是异步的,其行为就像是普通的测试用例。例如,你希望在每个测试之前,向数据库中填充一些内容。

  1. describe('Connection', function() {
  2. var db = new Connection,
  3. tobi = new User('tobi'),
  4. loki = new User('loki'),
  5. jane = new User('jane');
  6. beforeEach(function(done) {
  7. db.clear(function(err) {
  8. if (err) return done(err);
  9. db.save([tobi, loki, jane], done);
  10. });
  11. });
  12. describe('#find()', function() {
  13. it('respond with matching records', function(done) {
  14. db.find({type: 'User'}, function(err, res) {
  15. if (err) return done(err);
  16. res.should.have.length(3);
  17. done();
  18. });
  19. });
  20. });
  21. });