如何在 mocha 中为 sailsjs 控制器编写单元测试
How to write unit test for sailsjs controller in mocha
我是 sailsjs、nodejs 和 mocha 单元测试的新手。任何人都可以指导我如何为以下控制器编写单元测试?
getdata : function(req, res) {
User.findOne(req.id.query).populateAll()
.exec(function(err, res) {
if(err) { console.log(err); }
req.id = res;
return res.send(req.id);
});
},
config/route.js
module.exports.routes = {
'get /list/item': 'manager.getdata',
}
好的,首先在应用程序的根目录下创建测试文件夹。添加您喜欢的任何类型的文件夹结构...这是我的一个项目的屏幕截图:
我使用 supertest 并且应该...所以如果你想复制粘贴东西我会在这里输入请安装(当然还有 mocha):
npm install supertest
npm install should
接下来,在 bootstrap.test.js 中(查看上面的图片以查看放置位置)添加如下配置:
var Sails = require('sails');
before(function (done) {
process.env.NODE_ENV = 'test';
process.env.PORT = 9999;
Sails.lift({
models: {
connection: 'localDiskDb',
migrate: 'drop'
}
}, function (err, server) {
sails = server;
if (err) return done(err);
sails.log.info('***** Starting tests... *****');
console.log('\n');
done(null, sails);
});
});
after(function (done) {
sails.lower(done);
});
现在,添加你的第一个测试......在你的例子中我会把它放在 test/integration/controllers/MyController.test.js
这是您可以用于测试的演示代码:
var request = require('supertest'),
should = require('should');
describe('My controller', function () {
before(function (done) {
done(null, sails);
});
it('should get data', function (done) {
request(sails.hooks.http.app)
.get('/list/item')
.send({id: 123, someOtherParam: "something"})
.expect(200)
.end(function (err, res) {
if (err) return done(err);
should.exist(res.body);
done();
});
});
});
现在,打开 mocha.opts 文件(如果您感到困惑,请查看上面的屏幕截图)并添加如下内容:
--bail
--timeout 20s
test/bootstrap.test.js
test/integration/controllers/**/*.test.js
最后,在终端中从您的根文件夹中输入 mocha 以进行 运行 测试!
您还可以像这样将脚本添加到 package.json:
"scripts": {
"test": "mocha"
},
然后简单地 运行: npm test
我是 sailsjs、nodejs 和 mocha 单元测试的新手。任何人都可以指导我如何为以下控制器编写单元测试?
getdata : function(req, res) {
User.findOne(req.id.query).populateAll()
.exec(function(err, res) {
if(err) { console.log(err); }
req.id = res;
return res.send(req.id);
});
},
config/route.js
module.exports.routes = {
'get /list/item': 'manager.getdata',
}
好的,首先在应用程序的根目录下创建测试文件夹。添加您喜欢的任何类型的文件夹结构...这是我的一个项目的屏幕截图:
我使用 supertest 并且应该...所以如果你想复制粘贴东西我会在这里输入请安装(当然还有 mocha):
npm install supertest
npm install should
接下来,在 bootstrap.test.js 中(查看上面的图片以查看放置位置)添加如下配置:
var Sails = require('sails');
before(function (done) {
process.env.NODE_ENV = 'test';
process.env.PORT = 9999;
Sails.lift({
models: {
connection: 'localDiskDb',
migrate: 'drop'
}
}, function (err, server) {
sails = server;
if (err) return done(err);
sails.log.info('***** Starting tests... *****');
console.log('\n');
done(null, sails);
});
});
after(function (done) {
sails.lower(done);
});
现在,添加你的第一个测试......在你的例子中我会把它放在 test/integration/controllers/MyController.test.js
这是您可以用于测试的演示代码:
var request = require('supertest'),
should = require('should');
describe('My controller', function () {
before(function (done) {
done(null, sails);
});
it('should get data', function (done) {
request(sails.hooks.http.app)
.get('/list/item')
.send({id: 123, someOtherParam: "something"})
.expect(200)
.end(function (err, res) {
if (err) return done(err);
should.exist(res.body);
done();
});
});
});
现在,打开 mocha.opts 文件(如果您感到困惑,请查看上面的屏幕截图)并添加如下内容:
--bail
--timeout 20s
test/bootstrap.test.js
test/integration/controllers/**/*.test.js
最后,在终端中从您的根文件夹中输入 mocha 以进行 运行 测试!
您还可以像这样将脚本添加到 package.json:
"scripts": {
"test": "mocha"
},
然后简单地 运行: npm test