如何在Protractor测试中覆盖新的Date() [英] How to override new Date() on Protractor tests

查看:109
本文介绍了如何在Protractor测试中覆盖新的Date()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个应用程序,它改变了日期的行为。在我的模拟测试中,我需要覆盖 new Date()函数来测试所有场景。有谁知道如何覆盖它?

I've an app that changes it's behaviour with the date. On my mock tests I need to override the new Date() function to test all the scenarios. Does anyone know how to override it?

我已经尝试使用executeScript来更改返回值,但它不起作用。

I already tried to use the executeScript to change the return value but it doesn't work.

browser.driver.executeScript(''+
'Date = function(){return new Date(2012,0,20)};'
);

推荐答案

替换功能取决于已更换的原始日期,因此请保持在闭包中对它的引用,例如:

The replacement function depends on the original Date that's been replaced, so keep a reference to it in a closure, e.g.:

var Date = (function() {
  var OldDate = Date;
  return function (){
    return new OldDate(2012,0,20);
  }
}());

alert(new Date());

这篇关于如何在Protractor测试中覆盖新的Date()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆