断言时Mocha没有失败(假)

时间:2014-02-09 08:33:51

标签: mocha sails.js

当使用mocha测试sails应用程序的模型时,它似乎没有在回调中运行测试:

var assert = require('assert');

describe('Dataset', function() {
  describe('create', function() {
    it('should create a new dataset', function() {
      Dataset.create({
        'name': 'testDataSet',
        'description': 'This dataset exists for testing purposes only.',
        'visibility': 'private',
        'data': {
          "foo": {
            "barn": "door",
            "color": "green"
          }
        }
      }, function(err, dataset) {
        assert(false);
      });
    });
  });
});

该测试由一个初始化sails的脚本调用。 当运行此测试时,它会通过,即使它应该失败。

$: mocha

 1 passing (875ms)

此外,似乎永远不会运行包含assert(false)的回调。将assert false置于任何其他位置会产生exepcted结果,sails似乎也正常运行。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

您的代码是异步的,因此您应该在测试函数中使用回调:

var assert = require('assert');

describe('Dataset', function() {
  describe('create', function() {
    it('should create a new dataset', function(done) {
      Dataset.create({
        'name': 'testDataSet',
        'description': 'This dataset exists for testing purposes only.',
        'visibility': 'private',
        'data': {
          "foo": {
            "barn": "door",
            "color": "green"
          }
        }
      }, function(err, dataset) {
        if (err) throw err;
        done();
      });
    });
  });
});

在您需要的任何地方添加assert电话。

有很多例子here