在端到端的Protractor测试中使用TimeShift.js

时间:2015-11-11 09:17:12

标签: javascript angularjs datetime protractor e2e-testing

我尝试使用TimeShift.js来模拟标准的Javascript日期。这样我就可以指定TimeZone而不是使用系统。

文档似乎非常清楚,只是require库并像这样使用它:

Date = TimeShift.Date;
TimeShift.setTimezoneOffset(-300);
TimeShift.setTime(1275393600000);
new Date().toString();
// => "Tue Jun 01 2010 17:00:00 GMT+0500"

但是我得到了一个TypeError" undefined不是一个函数"。我在这里做错了什么?这是完整的step.js文件:

var chai        = require('chai');
var chaiPromise = require("chai-as-promised");
var HttpBackend = require('http-backend-proxy');
var utils       = require('../utils.js');
var timeshift   = require('../TimeShift.js');
var expect      = chai.expect;
chai.use(chaiPromise);
var fs = require('fs');

var steps = function() {
    var proxy = null;

    this.Before(function(scenario, callback) {
        proxy = new HttpBackend(browser);

        Date = timeshift.Date;
        timeshift.setTimezoneOffset(-300);
        timeshift.setTime(1275393600000);

        callback();
    });

    this.After(function(scenario, callback) {
        proxy.onLoad.reset();
        callback();
    });
}

module.exports = steps;

修改

即使直接从一个新的开发副本运行plain tests.html也会给我一个未定义的错误:

enter image description here

1 个答案:

答案 0 :(得分:2)

在量角器E2E测试中使用时,我遇到了与Timeshift相同的问题。

因为Timeshift不是一个节点模块,所以它不是必需的,所以我创建了一个fork,享受:https://github.com/cvakiitho/TimeShift-js/blob/master/timeshift.js