2017-09-13 163 views
0

如何在Mocha測試之間清除我的MongoDB集合? Collection.remove({})不起作用。 。 。 。如何在Mocha測試之間清除我的MongoDB集合? Collection.remove({})不起作用。 。 。

有沒有人看到我可能做錯了什麼?我試過User.remove({})這個語法,也沒有用。

此外,如果你有一個時刻,這似乎是一個合理的方式來寫這個測試?我承認新的測試。

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

我不認爲這是重複的。這個人的問題的解決方案在我的情況下不起作用。 –

+0

Collection.drop() – dmo

回答

0

你想使用deleteMany

根據不同的情況下,你可能要清空數據庫beforeAll畢竟規範而這beforeEachafterEach規範。

此外,請確保您使用的是測試數據庫,而不是使用生產或開發數據庫進行測試。

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

這也沒有工作。我仍然收到重複的關鍵錯誤。 –

+0

'config/config'中發生了什麼? –

+0

它提供''數據庫':process.env.DATABASE_URL || 'mongodb:// localhost:27017/blah','進入'mongoose.connect'。 –

相關問題