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

Using TimeShift.js in end to end Protractor tests

我正在尝试使用 TimeShift.js 模拟标准 Javascript 日期。这样我就可以指定一个时区而不是使用系统时区。

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

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

但是我得到一个 TypeError "undefined is not a function"。我在这里做错了什么?这是完整的 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;

编辑:

甚至 运行 直接从 develop 的新副本直接 tests.html 给了我未定义的错误:

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

因为Timeshift不是一个node模块,所以不能要求,所以我创建了一个fork,enjoy:https://github.com/cvakiitho/TimeShift-js/blob/master/timeshift.js