跑js运行测试

Con*_*nce 6 mocha.js node.js gruntjs sails.js

我正在尝试运行我的帆单元测试(使用摩卡和伊斯坦布尔)

跑步的时候

grunt test
Run Code Online (Sandbox Code Playgroud)

我得到了错误

  1) "before all" hook
  2) "after all" hook

  0 passing (5s)
  2 failing

  1)  "before all" hook:
     Error: timeout of 2000ms exceeded
      at null.<anonymous> (/vagrant/node_modules/mocha/lib/runnable.js:157:19)
      at Timer.listOnTimeout [as ontimeout] (timers.js:112:15)

  2)  "after all" hook:
     ReferenceError: sails is not defined
Run Code Online (Sandbox Code Playgroud)

设置似乎没有找到我的Sails ...但正在做

which sails
Run Code Online (Sandbox Code Playgroud)

我明白了

/usr/local/node/node-default/bin/sails
Run Code Online (Sandbox Code Playgroud)

并且运行sails lift正常

这是我项目中的mocha测试文件

//boostrap.test.js
var Sails = require('sails');

before(function(done) {
  Sails.lift({
    // configuration for testing purposes
  }, function(err, sails) {
    if (err) return done(err);
    // here you can load fixtures, etc.
    done(err, sails);
  });
});

after(function(done) {
  // here you can clear fixtures, etc.
  sails.lower(done);
});
Run Code Online (Sandbox Code Playgroud)

小智 4

首先,你有一个打字错误问题,你有:

var Sails = require('sails');
Run Code Online (Sandbox Code Playgroud)

但你尝试使用

sails.lower(done);
Run Code Online (Sandbox Code Playgroud)

代替

Sails.lower(done);
Run Code Online (Sandbox Code Playgroud)

然后,您需要定义配置的项目范围的“迁移”设置(http://sailsjs.org/#/documentation/concepts/ORM/model-settings.html?q=migrate)您只需编辑 config/ models.js 文件。您只需取消注释以下行即可:

//migrate: 'alter'
Run Code Online (Sandbox Code Playgroud)

享受 :)