【问题标题】:Writing test cases using Mocha and Chai使用 Mocha 和 Chai 编写测试用例
【发布时间】:2015-03-07 15:54:46
【问题描述】:

我有以下简单的功能:

var moment = require('moment-timezone');

exports.splitIntoDays = function(from,to) {
    var timeIntervals = [];
    var interval = {};
    var start = moment(from);
    var end = moment(to);
    if(start.isAfter(end)) {
        throw new Error('From date ('+from+') is after To date ('+to+').Enter a valid date range.');
    }
    var initial = start;
    console.log("Before loop"+initial.format("YYYY/MM/DD-HH:mm:ss")+"  "+initial.diff(end,'hours'));
    while(end.diff(initial,'hours') > 24) {
        timeIntervals.push({"from" : initial.format("YYYY/MM/DD-HH:mm:ss"), "to" : initial.add(24,'hours').format("YYYY/MM/DD-HH:mm:ss")});
        initial = initial.add(1,'hours');
    }
    timeIntervals.push({"from" : initial.format("YYYY/MM/DD-HH:mm:ss"), "to" : end.format("YYYY/MM/DD-HH:mm:ss")});
    console.info(JSON.stringify(timeIntervals));
    return timeIntervals;
}

所以,如果我叫它,splitIntoDays('2014/09/13-10:00:00','2014/09/14-09:00:00'), 我收到以下回复:

[ { from: '2014/09/13-10:00:00', to: '2014/09/14-09:00:00' } ]

我使用 Mocha 和 Chai 编写了以下测试:

var expect = require("chai").expect;
var utils = require("../Utils.js");

describe("Utils", function(){
    describe("#splitIntoDays()", function(){
        var timeIntervals = [];
        var results = utils.splitIntoDays('2014/09/13-10:00:00','2014/09/14-09:00:00');
        timeIntervals.push({ "from": '2014/09/13-10:00:00', "to": '2014/09/14-09:00:00' });
        expect(results).to.equal(timeIntervals);
    });
});

但是,这个失败了。你能帮我指出错误吗?

【问题讨论】:

    标签: node.js mocha.js chai


    【解决方案1】:

    您需要将您的测试包装在it 调用中,并且您需要使用deep.equal。例如:

    it("equal", function () {
        expect(results).to.deep.equal(timeIntervals);
    });
    

    equal 本身会检查对象是否与=== 严格相等。在您的计算机上启动 Node 并在提示符处键入 [] === []。你会得到结果false。这是因为您有两个 Array 对象,如果对象不是同一个实例,则严格相等检查将失败。

    it 调用是必要的,因为这是您告诉 Mocha“这是一个让您运行的测试”的方式。 describe 调用声明了测试套件,但它们本身并不声明任何测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2013-04-11
      • 2023-03-08
      • 2018-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多