2017-09-13 4 views
0

Comment puis-je effacer ma collection MongoDB entre les tests Mocha? Collection.remove ({}) ne fonctionne pas. . . .Comment puis-je effacer ma collection MongoDB entre les tests Mocha? Collection.remove ({}) ne fonctionne pas. . .

Est-ce que quelqu'un voit ce que je pourrais faire de mal?

J'ai essayé User.remove({}) avec cette syntaxe, aussi, en vain.

En outre, si vous avez un moment, cela vous semble-t-il un moyen raisonnable d'écrire ce test? Je suis certes nouveau pour les tests.

const User = require('../../../app/models/user'); 
const config = require('../../../config/config'); 
const mongoose = require('mongoose'); 
const chai = require('chai'); 
const chaiAsPromise = require('chai-as-promised'); 
const sinon = require('sinon'); 
const expect = chai.expect; 
chai.use(chaiAsPromise); 
mongoose.connect(config.database, { useMongoClient: true }); 
mongoose.Promise = global.Promise; 

describe('The user model',() => { 
    describe('during creation',() => { 
    beforeEach(() => { 
     // Clear the User collection of all users. 
     User.remove({},() => {}); 
    }); 
    afterEach(() => { 
     // Clear the User collection of all users. 
     User.remove({},() => {}); 
    }); 

    it('should store the user in the database',() => { 
     let userData = { 
     email: '[email protected]', 
     password: '1234' 
     }; 
     let user = new User(userData); 

     return user.save().then(
     newUser => { 
      return User.findOne({_id: newUser._id}, (error,retrievedUser) => { 
      let expected = newUser._id; 
      let actual = retrievedUser._id; 

      console.log(actual,expected); 
      return expect(actual).to.equal(expected); 
      }); 
     } 
    ); 
    }); 
+0

Je ne pense pas que ce soit un doublon. La solution au problème de cette personne ne fonctionne pas dans ma situation. –

+0

Collection.drop() – dmo

Répondre

0

Vous voulez utiliser deleteMany.

Selon le cas, vous pouvez vouloir vider la base de données beforeAll et Afterall spécifications plutôt que beforeeach et spec afterEach.

De même, vérifiez que vous utilisez une base de données de test et que vous ne testez pas avec une base de données de production ou de développement.

User.deleteMany({}, (err) => console.log(err)); 
+0

Cela n'a pas fonctionné non plus. Je reçois toujours des erreurs de clé en double. –

+0

Que se passe-t-il dans 'config/config'? –

+0

Il alimente '' base de données ': process.env.DATABASE_URL || 'mongodb: // localhost: 27017/blah', 'dans' mongoose.connect'. –