我想在我的SailsJS项目中添加测试,Mocha很常见所以我决定使用它。
我配置并注册了grunt-mocha-test以在“默认”任务触发器(tasks / register / default.js)运行时运行我的测试,但它没有运行任何东西! < / p>
如何正确配置和设置Mocha进入SailsJS以使用grunt自动运行?
是否可以手动运行测试?
这是我做的:
1)安装测试包 npm install mocha --save-dev npm install grunt-mocha-test --save-dev npm install sinon --save-dev npm install assert --save-dev
3)添加了文件任务/ config / mocha-test.js
module.exports = function(grunt) {
grunt.config.set('mochaTest', {
test: {
options: {
reporter: 'spec'
},
src: ['tests/**/*.spec.js']
}
}),
grunt.loadNpmTasks('grunt-mocha-test');
};
** 3)在tasks / register / default.js中注册的任务**
module.exports = function (grunt) {
grunt.registerTask('default', ['compileAssets', 'linkAssets', 'watch', 'mochaTest']);
};
2)在app根目录中创建了测试文件夹
测试/控制器/ session.spec.js
var SessionController = require('../../api/controllers/SessionController'),
sinon = require('sinon'),
assert = require('assert');
console.log('SessionController: ', SessionController);
describe('The SessionController', function () {
describe('When we load the signIn page', function () {
it ('should render the view', function () {
var view = sinon.spy();
SessionController.index(null, {
view: view
});
assert.ok(view.called);
});
});
});
答案 0 :(得分:2)
我不知道设置Grunt任务来运行Mocha测试是最好的解决方案。 Sails&#34;管道中的Grunt任务&#34;每次进行sails lift
时都会运行;每次抬起服务器时运行测试都会变得非常烦人,因为你在套件中添加了更多测试,因为在开发过程中你往往会sails lift
做很多事情!
你当然可以手动运行测试;你只需要在全球范围内安装Mocha:
sudo npm install -g mocha
然后在您应用的根目录中,只需键入mocha
即可在/test
下运行所有测试。您可以通过为命令提供子目录来指定要运行的测试子集,例如, mocha test/controller
。
就测试本身而言,可以按照您的方式对控制器进行单元测试,但这意味着您必须模拟请求和响应对象。更好的方法是在before
函数中解除Sails实例,然后向控制器发出HTTP请求。有关在每次测试之前或每次测试之前从测试中解除Sails的几个示例,请参阅this question的答案。然后,您可以使用节点http
模块向控制器发出请求,或者让自己的生活更轻松,并使用request模块。