使用Sails / Mocha运行多个测试文件

时间:2014-11-28 17:40:47

标签: sails.js mocha

我正在使用Mocha来测试Sails应用程序。我有2个测试文件。两个测试文件都执行标准的Before / After Sails.lift和Sails.lower。

当我分别运行mocha test / TestDataEntry.js和mocha test / TestEventEntry时,它们会正确执行。如果我只运行mocha,test / TestDataEntry正确执行但test / TestEventEntry失败。似乎Sails服务器没有正常循环向上。任何处理此问题的建议将不胜感激。终端输出如下:

larry@larry-Aspire-M3985 ~/Projects/web-backend $ mocha

  Data Entry testing:
sails lifted
    ✓ bad url 
    ✓ bad device (91ms)
    ✓ expired token (61ms)
    ✓ bad packet: missing Data field (59ms)
    ✓ bad packet: Data is not an array (62ms)
    ✓ bad packet: Data is empty (60ms)
    ✓ bad packet: missing data field D2 (60ms)
    ✓ bad packet: missing data field D1 (62ms)
    ✓ bad packet: missing data field TS (61ms)
    ✓ bad packet: bad timestamp field (64ms)
    ✓ good packet (60ms)
sails down

  Event Entry testing:
sails lifted
    ✓ bad url 
    1) bad device
double callback!
    2) expired token
double callback!
    3) bad packet: missing Data field
double callback!
    4) bad packet: Data is not an array
double callback!
    5) bad packet: Data is empty
double callback!
    6) bad packet: missing data field ED
double callback!
    7) bad packet: missing data field ET
double callback!
    8) bad packet: missing data field TS
double callback!
    9) bad packet: bad timestamp field
double callback!
    10) good packet
double callback!
sails down


  12 passing (2s)
  10 failing

1)事件录入测试:坏设备:      未捕获的AssertionError:预期[错误:连接ECONNREFUSED]为空

2)事件录入测试:过期令牌:      未捕获的AssertionError:预期[错误:连接ECONNREFUSED]为空

3)事件输入测试:坏包:丢失数据字段:      未捕获的AssertionError:预期[错误:连接ECONNREFUSED]为空

4)事件输入测试:坏包:数据不是数组:      未捕获的AssertionError:预期[错误:连接ECONNREFUSED]为空

5)事件输入测试:坏包:数据为空:      未捕获的AssertionError:预期[错误:连接ECONNREFUSED]为空

6)事件输入测试:坏包:缺少数据字段ED:      未捕获的AssertionError:预期[错误:连接ECONNREFUSED]为空

7)事件输入测试:坏包:缺少数据字段ET:      未捕获的AssertionError:预期[错误:连接ECONNREFUSED]为空

8)事件输入测试:坏包:丢失数据字段TS:      未捕获的AssertionError:预期[错误:连接ECONNREFUSED]为空

9)事件录入测试:错误数据包:错误的时间戳字段:      未捕获的AssertionError:预期[错误:连接ECONNREFUSED]为空

10)事件录入测试:好的数据包:      未捕获的AssertionError:预期[错误:连接ECONNREFUSED]为空

以下是前/后代码:

before(function (done) {
    // Lift Sails and start the server
    Sails.lift({
        log: {
            level: 'error'
        }
    }, function (err, sails) {
        console.log("sails lifted");
        done();
    });
});

after(function (done) {
    console.log('sails down');
    Sails.lower(done);
});

2 个答案:

答案 0 :(得分:0)

好的,事实证明,有一个匿名父描述块是所有测试文件描述块的父代。因此,如果在匿名父级别引入了前/后挂钩,则它将所有测试文件作为一个组覆盖。

Mocha默认按字母顺序执行测试文件。所以我构建了一个测试文件'aaaa.js',它只包含Sails提升和降低之前/之后。这将在父级别引入前/后挂钩。

现在,'mocha'在test / *中执行所有测试文件没有问题。这种方法的唯一缺点是我不再在单个测试文件中使用前/后挂钩,因此必须使用:'mocha test / aaaa.js test / TestDataEntry.js'以确保正确提升和降低Sails。

答案 1 :(得分:0)

使用sails运行多个mocha测试的方法是为每个mocha测试生成一个新的sails实例

var SailsApp = require('sails').Sails;

describe('MochaTest',function() {
    var sails = new SailsApp();

    before(function(done) {
        sails.lift({},
            function(err,server) {
                if(err) {
                    done(err);
                } else {
                    done(err,sails);
                }
            });
    });

    after(function(done) {
        sails.lower(done);
    });
});