2014-02-09 33 views
0

当使用摩卡来测试帆的应用程序的模型,它似乎并没有回调的内部运行测试:摩卡不上断言(假)失败

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); 
     }); 
    }); 
    }); 
}); 

这个测试是由一种叫做为其初始化风帆的脚本。 运行此测试时,它会通过,即使它应该失败。

$: mocha 

1 passing (875ms) 

另外,它似乎永远不会运行包含assert(false)的回调。放置在任何其他位置断言产生预期的结果,而且帆似乎正常运行。

任何帮助,非常感谢。

回答

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