如何在运行任何测试之前清除mysql测试数据库

时间:2018-01-22 15:42:32

标签: node.js sails.js mocha chai

我有一个非常简单的 Sails.Js 应用程序,其中包含评论发布模型。我使用编写了一些测试用例摩卡。测试用例运行正常,但在运行任何测试之前我无法清除测试数据库。

/*Comment.js */
module.exports = {
    attributes: {
       comment: {type: 'string'},
       timestamp: {type: 'datetime'}
    }
};

CommentService有一个函数可以提供所有注释。

/*CommentService.js */
module.exports = {
    getAllComments: function () {
      return Comment.find()
    }
};

bootstrap.js文件包含以下代码。我正在使用 MYSQL 数据库。 我在bootstrap.js中的数据库配置中假设它应该截断所有模式,但不确定为什么不发生这种情况。

var sails = require('sails');
var _ = require('lodash');

global.chai = require('chai');
global.should = chai.should();

before(function (done) {

  // Increase the Mocha timeout so that Sails has enough time to lift.
  this.timeout(10000);

  sails.lift({
    log: {
      level: 'silent'
    },
    hooks: {
      grunt: false
    },
    connections: {
      // Replace the following with whatever suits you.
      testMysql: {
        adapter   : 'sails-mysql',
        host      : 'localhost',
        port      : 3306,
        user      : 'root',
        password  : 'saroj990',
        database  : 'testDB'
      }
    },

    models: {
      connection: 'testMysql',
      migrate: 'drop'
    }
}, function (err, server) {
    if (err) return done(err);
      // here you can load fixtures, etc.
      done(err, sails);
    });
});

after(function (done) {
  // here you can clear fixtures, etc.
  if (sails && _.isFunction(sails.lower)) {
    sails.lower(done);
  }
});

CommentService.spec.js包含以下代码

//CommentService.spec.js
require('../../bootstrap');

describe('The PostService', function () {

    before(function (done) {
      Comment.create({comment: "This is a comment"})
          .then(function(){
              done()
          })
          .catch(function(err){
              done(err);
          });
    });

    it('should return all posts with their comments', function (done) {
    CommentService
      .getAllComments()
      .then(function (comments) {
          comments.should.be.an('array');
          comments.should.have.length(1);
          done();
      })
      .catch(done);
    });
});

非常感谢任何帮助/指针。

0 个答案:

没有答案