angular - 在 Protractor 中模拟日期

标签 angular typescript protractor e2e-testing

我正在使用 Protractor 为我的 Angular (4) 应用程序编写一套端到端测试。我的后端配置为连接到生产数据库的精确副本,但填充了虚拟数据。

我前端的很大一部分是正确显示历史数据。目前,有一段时间有我要显示的数据。然而,显然在一周的时间里,我的“每周” View 将所有数据显示为 0。

是否有可能欺骗 Protractor 认为日期在我播种虚拟数据的时间段内,所以显示的数据是可预测的?

更新:

我现在有这段代码:

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;};

取决于您如何在代码中获取日期,但是它会覆盖相同的内容以返回所需的日期。

如果您使用的是 moment,则重写您正在使用的完全相同的函数。

let date = moment(2017, 6, 14);
moment = () => {return date};

 describe('Login & Home Page', () => {
    let realMoment = moment;
    let moment = function(){
        this.prototype = realMoment.prototype;
        return realMoment('08-03-2017', 'MM-DD-YYYY'); 
    };
    beforeEach(() => {
    });
    it('expect moment(\'asd\') to return 08-03-2017', () => {
       expect(moment('asd').format('MM-DD-YYYY')).toBe('08-03-2017'))
    });

嗯,我想 jasmine.clock.mockDate() 才是真正的方法

var today = moment('2015-10-19').toDate();
jasmine.clock().mockDate(today);
expect(moment().valueOf()).toEqual(today.valueOf());

关于angular - 在 Protractor 中模拟日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44545638/

相关文章:

angular - PrimeNG:更改后如何将项目更改为 'pack' 或 'build'?

angular - angular 4中在哪里定义常用环境变量

reactjs - 使用 Enzyme 测试 React 组件。 typescript 找不到实例方法

javascript - 如何使用 Protractor 通过 CSS 代码单击元素?

javascript - 无法使用 Protractor 选择组件按钮

Angular 2 错误遇到静态解析符号值

angular - 如何将注入(inject)服务从父类(super class)继承到 Angular 2 中的子类组件

javascript - 使用 Angular 和 Rxjs 处理多个 HTTP 请求并返回结果

node.js - 如何修改使用 TypeScript 构建的 npm 包

python - 在 Python 中使用 Angular JS( Protractor )和 Selenium