您的代碼存在一些錯誤。
- 有一個逗號(,)之間&的returnValue,它應該是一個 點(。)
- 沒有叫Date對象格式的功能,我的鉻 肯定沒有提出任何方法,這樣
- 您沒有使用它功能,可類似於 @Test在Java中(見下面的代碼)
- 回答您的評論有關的原型,這也應該工作, 請用間諜格式替換getHours來嘗試一下。
但我嘲笑的方法for your reference and it works
var jasmineFunc = function(leftDate, rightDate) {
var leftDateFormat = leftDate.format("H:mm");
rightDate = new Date(rightDate - 60000);
var rightDateFormat = rightDate.format("H:mm");
}
Date.prototype.format = function() {
return "This formats the text";
}
describe("format", function() {
it('tempSpec', function() {
var leftDate = new Date(2016, 0, 1, 0, 0, 0, 0);
var rightDate = new Date(2016, 0, 1, 2, 0, 0, 0);
spyOn(leftDate, "getHours").and.returnValue("00:00");
spyOn(rightDate, "getHours").and.returnValue("00:59");
spyOn(leftDate, "format").and.returnValue("I've hijacked it in the spy");
var dt = leftDate.getHours()
var txt = leftDate.format()
expect(dt).toEqual("00:00");
expect(txt).toEqual("I've hijacked it in the spy");
})
});
- 僅供參考下面是js的日期格式一些information,它採用了 平原構造函數的格式。
- 同樣出於好奇,我可能會問你爲什麼你想測試一個 API代碼,您應該測試自己的代碼,因爲這些API的 已經經過徹底
這裏是一個更新版本的代碼,我想我終於明白你的意思是被對象改變了,它被重新分配了。 那麼改變了什麼?
var jasmineFunc = {
testFunc: function(leftDate, rightDate) {
var leftDateFormat = this.formatFunc(leftDate);
rightDate = new Date(rightDate - 60000);
var rightDateFormat = this.formatFunc(rightDate);
return {'left' : leftDateFormat, 'right' : rightDateFormat}
},
formatFunc: function(value) {
return value.format("H:mm")
}
}
Date.prototype.format = function() {
return "This formats the text";
}
describe("format Spec", function() {
it('tempSpec', function() {
var leftDate = new Date(2016, 0, 1, 0, 0, 0, 0);
var rightDate = new Date(2016, 0, 1, 2, 0, 0, 0);
spyOn(jasmineFunc, "formatFunc").and.returnValue("Some arbitrary Value");
var testObj = jasmineFunc.testFunc(leftDate, rightDate);
expect(testObj.left).toEqual("Some arbitrary Value");
expect(testObj.right).toEqual("Some arbitrary Value");
});
});
- 既然你正在重用的變量,我已經委派格式 另一個函數,這樣我可以按我的要求嘲笑它。
- 請注意,我不再需要模擬日期原型,我可以簡單地使用 模擬中間函數,因此您可以根據需要重新分配它多達 次。
對不起,現在提到格式是Date的原型方法(Date.prototype.format = function(){....};如何在這些類型的方法上創建間諜? –
檢出小提琴,爲你更新原型 –
感謝您的努力,但我不想窺探getHours。而偵察leftDate在這裏是直截了當的,但rightDate對象正在改變功能,間諜不在那個上工作 –