Angular 用量角器模拟日期
我正在使用量角器为我的角度(4)应用程序编写一套端到端测试。我的后端配置为连接到生产数据库的精确副本,但填充了虚拟数据 我的前端很大一部分是正确显示历史数据。目前,有一个特定的时段有我想要显示的数据。但是,很明显,在一周内,我的“每周”视图将所有数据显示为0 是否有可能欺骗量角器,使其认为日期在我为虚拟数据设定种子的时间段内,因此显示的数据是可预测的 更新: 我现在有了这个代码:Angular 用量角器模拟日期,angular,typescript,protractor,e2e-testing,Angular,Typescript,Protractor,E2e Testing,我正在使用量角器为我的角度(4)应用程序编写一套端到端测试。我的后端配置为连接到生产数据库的精确副本,但填充了虚拟数据 我的前端很大一部分是正确显示历史数据。目前,有一个特定的时段有我想要显示的数据。但是,很明显,在一周内,我的“每周”视图将所有数据显示为0 是否有可能欺骗量角器,使其认为日期在我为虚拟数据设定种子的时间段内,因此显示的数据是可预测的 更新: 我现在有了这个代码: import * as moment from 'moment'; describe('Login & H
import * as moment from 'moment';
describe('Login & Home Page', () => {
beforeEach(() => {
let date = moment('08-03-2017');
moment = () => { return date };
})
// ...
如果在代码中使用
Date
构造函数,则可以重写该构造函数
var d = new Date(2017, 5, 14);
Date = function(){return d;};
取决于您在代码中获取日期的方式,但返回所需日期的方式是相同的
如果您使用的是力矩,则覆盖与您使用的完全相同的函数
let date = moment(2017, 6, 14);
moment = () => {return date};
嗯,我想真正的方法应该是
jasmine.clock.mockDate()
var today = moment('2015-10-19').toDate();
jasmine.clock().mockDate(today);
expect(moment().valueOf()).toEqual(today.valueOf());
我正在使用moment()
构造函数。我不明白的是我应该在哪里重写这个函数?在我的量角器测试的beforeach()
中?如果希望将其应用于套件中的所有项目,可以在beforeach()
中执行,如果希望此更改仅限于单个测试,也可以在it
中执行。两者都应该起作用。我希望您使用的是全球时刻
。另外,请确保为您在代码中使用的其他moment
函数提供别名,否则它将失败。好的,如果您看到我更新的问题,您可以看到有什么问题,但是,我得到编译器错误[ts]无法分配给“moment”,因为它不是变量,如何在TypeScripttryconst-moment=
或let-moment=
中做到这一点,如果我这样做,那么在声明前使用块作用域变量'moment'。
在let-date=moment(2017,6,14)代码>行?
var today = moment('2015-10-19').toDate();
jasmine.clock().mockDate(today);
expect(moment().valueOf()).toEqual(today.valueOf());