jasmine spyOn javascript 新日期
jasmine spyOn on javascript new Date
我正在 angulajs 中对我的客户端代码进行单元测试,我理解这段代码的意思
var newdate = new Date(2013,6,29);
spyOn(Date.prototype, 'getTime').and.callFake(function() {
return newdate;
});
我们模拟了 Date 对象的 getTime() 方法。但我想改为模拟 new Date() 。例如我要测试的代码包含这一行
payload.created_at = new Date();
我无权访问 payload.created_at。所以我想告诉茉莉花,每当你看到新的 Date() 时,用我给你的给定日期替换它。所以我在想类似的东西,但它不起作用。
spyOn(Date.prototype, 'new Date').and.callFake(function() {
return newdate;
});
但新日期不是日期的方法。有人可以帮我解决这个问题吗?谢谢
所以这个 link [Mock date constructor with Jasmine 有答案,但由于某种原因它对我不起作用。我想这可能与我的茉莉花版本有关,但下面是对我有用的代码
var oldDate = new Date();
spyOn(window, 'Date').and.callFake(function() {
return oldDate;
});
上面代码的.and.callFake和上面的link有区别。谢谢
Jasmine Clock api 允许您伪造 JavaScript 日期功能,而无需手动为其编写间谍程序。
请特别阅读有关 mocking the date 的部分。
describe("Mocking the Date object", function(){
beforeEach(function() {
jasmine.clock().install();
});
it("mocks the Date object and sets it to a given time", function() {
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();
});
});
我正在 angulajs 中对我的客户端代码进行单元测试,我理解这段代码的意思
var newdate = new Date(2013,6,29);
spyOn(Date.prototype, 'getTime').and.callFake(function() {
return newdate;
});
我们模拟了 Date 对象的 getTime() 方法。但我想改为模拟 new Date() 。例如我要测试的代码包含这一行
payload.created_at = new Date();
我无权访问 payload.created_at。所以我想告诉茉莉花,每当你看到新的 Date() 时,用我给你的给定日期替换它。所以我在想类似的东西,但它不起作用。
spyOn(Date.prototype, 'new Date').and.callFake(function() {
return newdate;
});
但新日期不是日期的方法。有人可以帮我解决这个问题吗?谢谢
所以这个 link [Mock date constructor with Jasmine 有答案,但由于某种原因它对我不起作用。我想这可能与我的茉莉花版本有关,但下面是对我有用的代码
var oldDate = new Date();
spyOn(window, 'Date').and.callFake(function() {
return oldDate;
});
上面代码的.and.callFake和上面的link有区别。谢谢
Jasmine Clock api 允许您伪造 JavaScript 日期功能,而无需手动为其编写间谍程序。
请特别阅读有关 mocking the date 的部分。
describe("Mocking the Date object", function(){
beforeEach(function() {
jasmine.clock().install();
});
it("mocks the Date object and sets it to a given time", function() {
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();
});
});