首页 文章

SailsJS如何设置Mocha Test Framework?

提问于
浏览
1

我想在我的SailsJS项目中添加测试,Mocha很常见所以我决定使用它 .

当"default"任务触发器(tasks / register / default.js)运行时,我配置并注册了grunt-mocha-test来运行我的测试, but it is not running anything!

How to properly configure and setup Mocha into SailsJS to run automatically with grunt?

Is it possible to run the tests manually?

这是我做的:

1) install test packages npm install mocha --save-dev npm install grunt-mocha-test --save-dev npm install sinon --save-dev npm install assert --save-dev

3) added file tasks/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) created tests folder in the app root

测试/控制器/ 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);
            });
        });
    });

1 回答

  • 2

    我不知道设置Grunt任务来运行Mocha测试是最好的解决方案 . 每次执行时都会运行Sails _2972108中的Grunt任务 sails lift ;每次抬起服务器时运行测试都会变得非常烦人,因为你在套件中添加了更多的测试,因为你在开发过程中往往会做很多事情!

    你当然可以手动运行测试;你只需要全局安装Mocha:

    sudo npm install -g mocha
    

    然后在您的应用程序的根目录中,只需键入 mocha 即可运行 /test 下的所有测试 . 您可以通过为命令提供子目录来指定要运行的测试子集,例如, mocha test/controller .

    就测试本身而言,它正在做,但这意味着你必须模拟请求和响应对象 . 更好的方法是在 before 函数中解除Sails实例,然后向控制器发出HTTP请求 . 请参阅this question的答案,了解在每次测试之前或每次测试之前从测试中提升Sails的几个示例 . 然后,您可以使用Node http 模块向控制器发出请求,或者让您自己更轻松地使用request模块 .

相关问题