Limpeza do banco de dados entre os testes Mocha com Pg-promessa

describe('db truncation in before hook', () => {
beforeEach
('truncating db', () => {
return db.none('TRUNCATE courses RESTART IDENTITY')
});

// in one test we insert data into our database
it
('inserting data into db', () => {
return db.none('insert into courses (title) values (${title})', { title: 'hello' })
});

// in another test we check db is indeed been cleaned by the before hook
it
('not seeing data in the db', () => {
return db.any('select * from courses').then((data) => {
expect
(data).to.deep.equal([]);
})
});
});
  1. Por que estamos retornando db.any/none promessas de nossos testes?

    Porque se o Mocha vir uma promessa devolvida do itbloco, ele vai esperar até que essa promessa seja resolvida. Caso contrário, nossos testes estariam sempre passando por não acertar expectna hora certa.
    https://mochajs.org/#asynchronous-code

  2. O que o gancho antes faz?

    Ele trunca a coursestabela e reinicia sua idcontagem de colunas de sequência (por exemplo ).
    https://www.postgresql.org/docs/9.1/static/sql-truncate.html