2017-06-14 48 views
2

我正在使用量角器爲我的角(4)應用程序編寫一套端到端測試套件。我的後端配置爲連接到生產數據庫的精確副本,但填充了虛擬數據。在量角器中嘲笑日期

我的前端很大一部分是正確顯示歷史數據。目前,有一段時間有我想要顯示的數據。然而,顯然在一週的時間內,我的「每週」視圖將顯示所有數據爲0.

是否有可能欺騙量角器認爲日期是在播種虛擬數據的時間段內,因此顯示的數據是可預測的?

更新:

我現在有這樣的代碼:如果您在代碼中使用Date構造

import * as moment from 'moment'; 

describe('Login & Home Page',() => { 
    beforeEach(() => { 
     let date = moment('08-03-2017'); 
     moment =() => { return date }; 
    }) 
// ... 

回答

1

可以覆蓋相同。

var d = new Date(2017, 5, 14); 
Date = function(){return d;}; 

取決於如何在代碼中獲取日期,但是它會覆蓋相同的值以返回所需的日期。

如果您正在使用時刻,則覆蓋您正在使用的完全相同的功能。

let date = moment(2017, 6, 14); 
moment =() => {return date}; 

describe('Login & Home Page',() => { 
    let realMoment = moment; 
    let moment = function(){ 
     this.prototype = realMoment.prototype; 
     return realMoment('08-03-2017', 'MM-DD-YYYY'); 
    }; 
    beforeEach(() => { 
    }); 
    it('expect moment(\'asd\') to return 08-03-2017',() => { 
     expect(moment('asd').format('MM-DD-YYYY')).toBe('08-03-2017')) 
    }); 

嗯,我想jasmine.clock.mockDate()是去

var today = moment('2015-10-19').toDate(); 
jasmine.clock().mockDate(today); 
expect(moment().valueOf()).toEqual(today.valueOf()); 
+0

我現在用的是'那一刻()'構造實際的方式。我不明白的是我應該重寫這個函數的地方?在量角器測試的'BeforeEach()'中? –

+0

如果您希望將它應用於套件中的所有項目,您可以在'beforeEach()'中執行,或者如果您希望將此更改限制爲單個測試,則可以在'it'中執行。兩者都應該工作。我希望你正在使用一個全球性的「時刻」。還要確保你提供別名給你在你的代碼中使用的其他'moment'函數,否則它會失敗。 – sabithpocker

+0

好的,如果你看到我更新的問題,你可以看到有什麼,但是,我得到的編譯器錯誤'[ts]不能分配給'時刻',因爲它不是一個變量',我該怎麼做TypeScript –