javascript - Jest 检查函数是否返回 sessionStorage

标签 javascript reactjs testing jestjs

我正在尝试为以下函数编写一个 Jest 测试,它设置 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));
};

我对从哪里开始感到困惑,即我得到一个 Jest 错误,说 session 存储没有在像这样的简单测试中定义:

it('takes in session parameters and returns sessionStorage', () => {
  console.log(setSession('test@me.io', Date.now(), 'ha_sh', []));
});

最佳答案

您必须在单元测试中模拟 session 存储才能调用它。

一种方法是:

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 });

关于javascript - Jest 检查函数是否返回 sessionStorage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40958808/

相关文章:

javascript - Components.classes 给出 "Error: Permission denied to access property ' 类'”

javascript - JavaScript 中两个字符串之间的常用字母

javascript - 在文本区域中模仿插入符号

git - "src"属性中的模式不匹配任何文件“React.js

testing - 使用 Spring LDAP 嵌入式服务器运行测试时“地址已在使用”

performance - 移动应用的 KPI

javascript - 通过 id 和当前用户限制从数组中删除子文档

reactjs - 类型 '(props: Props) => Element[]' 不可分配给类型 'FunctionComponent<Props>'

javascript - React 中的 Ag-grid 纯 JS 单元渲染器

ruby-on-rails - ruby 矿 'Unable to attach test reporter to test framework'