Node.js 如何解决Nodejs的单元测试问题?
我正在尝试对我的代码进行单元测试。 我有这样的想法:Node.js 如何解决Nodejs的单元测试问题?,node.js,unit-testing,mocha.js,sinon,Node.js,Unit Testing,Mocha.js,Sinon,我正在尝试对我的代码进行单元测试。 我有这样的想法: testController.js var testController = function(){ var create = function(req, res) { var params = req.body; if (!params.title) { res.status(400) res.send('title is required’);
testController.js
var testController = function(){
var create = function(req, res) {
var params = req.body;
if (!params.title) {
res.status(400)
res.send('title is required’);
}
//proceed if title is passed
myModel.create({
'title': params.title,
}).then(function(data){
res.json(data);
}).catch(function(err){
res.json(err);
})
}
})
testController.spec.js
var sinon = require('sinon'),
should = require('should’);
describe(‘my test', function(){
beforeEach(function() {
testCtrl = require('../controllers/testController');
models = require('../models');
myModel = models.myModel;
testObj = new testCtrl();
});
describe(‘my test 1’, function(){
it('should return 400 if missing title’, function() {
//no title
var test_req = {
'body' : {}
};
var test_res = {
'status': function(){},
'send':function(){},
'json':{
"test":"test"
}
};
var stub = sinon.stub(myModel, 'create');
testObj.create(test_req, test_res);
stub.restore();
})
})
})
==>输出类型错误:运行测试时无法读取未定义的属性“then”
所以我的问题是,我期待res.send‘需要标题’;,代码将停止处理查询。但出于某种原因,myModel.create仍然会启动。我对这个框架还不熟悉,不知道到底出了什么问题。有人能帮我吗?谢谢!
看起来您只需要从testController返回create。是不是您在声明var模型,而在声明之后您正在使用对象模型?您的myModel.create方法是否返回一个thenable?当您从testController返回create时会发生什么?@amenadiel很好,但这只是我的输入错误。您在testController中的myModel放在哪里?你确定myModel.create会返回一个承诺吗?@Pytth我会把它放在代码的顶端。我只是没有在这里发帖。我确信它会返回一个承诺,因为代码是有效的。只有单元测试失败。如果您这样做了,那么您还需要更改testObj.createtest_req,test_res;测试对象测试请求,测试请求;我为我的问题使用了一种变通方法。谢谢你的帮助+1.