首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Mocha和柴编写测试用例

使用Mocha和柴编写测试用例
EN

Stack Overflow用户
提问于 2015-01-09 10:36:12
回答 1查看 481关注 0票数 1

我有一个简单的函数:

代码语言:javascript
复制
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'),我会得到以下响应:

代码语言:javascript
复制
[ { from: '2014/09/13-10:00:00', to: '2014/09/14-09:00:00' } ]

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

代码语言:javascript
复制
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);
    });
});

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-09 11:37:26

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

代码语言:javascript
复制
it("equal", function () {
    expect(results).to.deep.equal(timeIntervals);
});

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

it调用是必要的,因为这是您告诉Mocha“这是要运行的测试”的方式。describe调用声明测试套件,但自己不声明任何测试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27858682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档