簡體   English   中英

AngularJS - 對使用 moment.js 的控制器進行單元測試

[英]AngularJS - Unit tests on Controller that uses moment.js

我正在嘗試為使用 moment.js 處理一周中的三個日期的控制器進行單元測試。 我的測試框架是 jasmine,我的 AngularJS 版本是 v1.3.15

基本上我有一個 init() 函數來設置它們,我想檢查它們是否都在控制器中正確設置。

var myController = this;

myController.init = function () {
    myController.currentDate = moment().format('DD-MM-YYYY');
    myController.startOfWeek = moment(currentDate).startOf('week').format('DD-MM-YYYY');
    myController.endOfWeek = moment(currentDate).endOf('week').format('DD-MM-YYYY');
};

在這一點上,我不確定這種方法是否正確和/或我是否應該在這里測試這些東西。

提前致謝!

您不應該將currentDate傳遞回時刻創建函數。 這樣做將調用解析,將退回到瀏覽器的實現(向您發出棄用警告),並且如果瀏覽器的區域設置與您格式化的區域設置不同,則會失敗。

每次只調用moment()

myController.currentDate = moment().format('DD-MM-YYYY');
myController.startOfWeek = moment().startOf('week').format('DD-MM-YYYY');
myController.endOfWeek = moment().endOf('week').format('DD-MM-YYYY');

或者,如果您願意,您可以只捕獲一次當前時間,然后為每個函數克隆那個時刻。

var now = moment();
myController.currentDate = now.format('DD-MM-YYYY');
myController.startOfWeek = moment(now).startOf('week').format('DD-MM-YYYY');
myController.endOfWeek = moment(now).endOf('week').format('DD-MM-YYYY');

將 moment 傳遞給 moment 創建函數將克隆它,防止startOfendOf改變原始值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM