2016-12-04 89 views
1

我試圖寫下面的函數開玩笑測試,這臺sessionStorage的條目:檢查函數返回的sessionStorage用開玩笑

/** 
* @desc create authenticated user session 
* @param {String} [email=''] 
* @param {Date} [expires=Date.now()] 
* @param {String} [hash=''] 
* @param {Array} users 
* @return {Session} 
*/ 
export const setSession = (
    email = '', 
    expires = Date.now(), 
    hash = '', 
    users: []) => { 
    const session = { 
    email, 
    expires, 
    hash, 
    users 
    }; 
    sessionStorage.setItem('MY_SESSION', JSON.stringify(session)); 
}; 

我很困惑的地方開始,即我得到開玩笑錯誤,說會話存儲是不是在一個簡單的測試定義是這樣的:

it('takes in session parameters and returns sessionStorage',() => { 
    console.log(setSession('[email protected]', Date.now(), 'ha_sh', [])); 
}); 
+0

嘗試你也可以只設置'global.sessionStorage'你的模擬window.sessionStorage代替 –

回答

1

你將不得不嘲笑會話存儲在單元測試是abble調用它。要做到這一點

一種方法是:

var myStorage = function() { 
    var sessionStorage = {}; 
    return { 
    getItem: function(key) { 
     return sessionStorage[key]; 
    }, 
    setItem: function(key, value) { 
     sessionStorage[key] = value.toString(); 
    }, 
    clear: function() { 
     sessionStorage = {}; 
    } 
    }; 
}; 
Object.defineProperty(window, 'sessionStorage', { value: myStorage }); 
+0

。 –