2016-12-04 90 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

。 –