如何模拟AngularJS中的构造函数(特别是Date()构造函数)
How to mock constructors in AngularJS(in particular Date() constructor)
我需要测试一个函数,该函数接受millisSinceEpoch,如果日期是当前日期则返回时间,否则返回时间。
getLocaleAbbreviatedDatetimeString: function(millisSinceEpoch) {
var date = new Date(millisSinceEpoch);
if (date.toLocaleDateString() == new Date().toLocaleDateString()) {
// The replace function removes 'seconds' from the time returned.
return date.toLocaleTimeString().replace(/:'d'd /, ' ');
}
return date.toLocaleDateString();
我希望通过模拟Date()构造函数来测试这一点,但我不确定如何使用"prototype"来模拟构造函数?
还有,有没有更好的测试方法呢?
我尽量不在我的代码中使用Date
或Math.random
。
我创建服务来替换它们,这样我就可以通过简单地激活mock模块来模拟我想要的内容。
angular.module('my.date',[])
.value('Date', Date);
angular.module('my.mock.date',[])
.value('Date', function(){
// mock Date code
});
(当然,您不需要模拟Date
的所有功能,只需要模拟您使用的部分…)
参见angular上的这个问题。这是关于stackoverflow的答案
相关文章:
- ES6构造函数返回基类的实例
- 使用Google Visualization动态调用构造函数
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- javascript中对象构造函数中的var属性与this.properties
- 理解typescript中的构造函数接口
- 为什么构造函数不是构造函数
- 如果在构造函数中有“返回”,则在 JavaScript 中的新运算符中做了什么
- 拦截对构造函数的调用
- 使用闭包共享构造函数参数
- 文本表示法VS.构造函数,用于在JavaScript中创建对象
- 从js引擎的角度来看闭包和构造函数是如何工作的
- 如何使用此从对象访问构造函数
- 如何模拟AngularJS中的构造函数(特别是Date()构造函数)
- 在javascript中,接口和构造函数的区别是什么?
- 在Angular 2组件定义中使用ngOnInit和构造函数的实际区别是什么?
- JavaScript:在构造函数中定义函数而不是使用原型——区别是什么?
- 在JavaScript中添加一个全局变量/函数(特别是NativeScript)
- 函数调用的参数错误无效,特别是IE和FF
- return和new关键字构造函数模式的区别是什么?
- JavaScript中函数和构造函数的区别是什么?