オプションの引数として日付を取る関数をテストしています。引数なしで関数が呼び出された場合、新しい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();
});
@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();
});
ジャスミンの例から、
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();
});
私にとっては:
spyOn(Date, 'now').and.callFake(function() {
return _currdate;
});
の代わりに .andCallFake
(「grunt-contrib-jasmine」を使用:「^ 0.6.5」、ジャスミン2.0.0を含むようです)
これは私のために働いた
var baseTime = new Date().getTime();
spyOn(window, 'Date').and.callFake(function() {
return {getTime: function(){ return baseTime;}};
});
EdgeバージョンのJasmineを使用しているユーザーの場合:
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();
});