【问题标题】:SailsJS how to setup Mocha Test Framework?SailsJS 如何设置 Mocha 测试框架?
【发布时间】:2014-06-17 19:57:59
【问题描述】:

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

我配置并注册了 grunt-mocha-test 以在“默认”任务触发器 (tasks/register/default.js) 运行时运行我的测试,但它没有运行任何东西!

如何在 SailsJS 中正确配置和设置 Mocha 以使用 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) 添加文件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) 在应用根目录中创建测试文件夹

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

【问题讨论】:

    标签: express mocha.js sails.js


    【解决方案1】:

    我不知道设置一个 Grunt 任务来运行你的 Mocha 测试是最好的解决方案。每次执行 sails lift 时都会运行 Sails“管道”中的 Grunt 任务;当您向套件添加更多测试时,每次提升服务器时运行测试可能会变得非常烦人,因为您在开发过程中往往会做很多sails lift

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

    sudo npm install -g mocha
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-10
      • 1970-01-01
      • 2013-07-07
      • 1970-01-01
      • 1970-01-01
      • 2014-11-19
      • 2016-08-27
      相关资源
      最近更新 更多