Jasmine的模拟日期构造函数
Mock date constructor with Jasmine
我正在测试一个将日期作为可选参数的函数。我想断言,如果在没有参数的情况下调用函数,则会创建一个新的Date对象。
var foo = function (date) {
var d = date || new Date();
return d.toISOString();
}
如何断言调用了new Date
?
到目前为止,我有这样的东西:
it('formats today like ISO-8601', function () {
spyOn(Date, 'prototype');
expect().toHaveBeenCalled();
});
请参阅:https://github.com/pivotal/jasmine/wiki/Spies
来自茉莉花示例,
jasmine.clock().install();
var baseTime = new Date(2013, 9, 23);
jasmine.clock().mockDate(baseTime);
jasmine.clock().tick(50)
expect(new Date().getTime()).toEqual(baseTime.getTime() + 50);
afterEach(function () {
jasmine.clock().uninstall();
});
茉莉花日期
信用给@HMR。我写的测试是为了验证:
it('Should spy on Date', function() {
var oldDate = Date;
spyOn(window, 'Date').andCallFake(function() {
return new oldDate();
});
var d = new Date().toISOString;
expect(window.Date).toHaveBeenCalled();
});
对我来说,它与一起工作
spyOn(Date, 'now').and.callFake(function() {
return _currdate;
});
而不是.andCallFake
(使用"grunt contrib jasmine":"^0.6.5",似乎包括jasmine 2.0.0)
对我来说,它只使用mockDate()
而不使用其他任何东西:
jasmine.clock().mockDate(new Date('2000-01-01T01:01:01'));
这对我很有效
var baseTime = new Date().getTime();
spyOn(window, 'Date').and.callFake(function() {
return {getTime: function(){ return baseTime;}};
});
对于使用JasmineEdge版本的用户:
it('Should spy on Date', function() {
var oldDate = Date;
// and.callFake
spyOn(window, 'Date').and.callFake(function() {
return new oldDate();
});
var d = new Date().toISOString;
expect(window.Date).toHaveBeenCalled();
});
相关文章:
- ES6构造函数返回基类的实例
- 使用Google Visualization动态调用构造函数
- javascript中对象构造函数中的var属性与this.properties
- 理解typescript中的构造函数接口
- 为什么构造函数不是构造函数
- 如果在构造函数中有“返回”,则在 JavaScript 中的新运算符中做了什么
- 拦截对构造函数的调用
- Chrome Javascript日期构造函数错误
- 如何防止JavaScript日期构造函数接受无效日期
- 时间戳未正确从日期构造函数转换
- 日期(日期字符串)构造函数不一致
- 当使用类似的参数调用日期构造函数时,会提供意外的结果
- Jasmine的模拟日期构造函数
- 格式化从构造函数获取的日期
- 如何在substr javascript中调整日期构造函数
- 日期构造函数和UTC
- 传递给date构造函数的Javascript日期字符串给出了奇怪的结果
- 重写javascript日期构造函数
- 即使当前时间是标准时间,Javascript日期构造函数也默认为夏令时
- ECMAScript 5.1规范不正确?日期构造函数日期/时间格式解析为UTC