我如何测试我的脚本删除cookie

时间:2018-06-13 21:03:04

标签: javascript testing cookies setcookie js-cookie

我在javascript中编写了一个脚本,用于删除当前域中的所有Cookie(白名单中包含的一些Cookie)(使用document.cookie)。我怎样才能确保它正常工作并确实删除了cookie?

我在浏览器中运行它,将其包含在html文件中,然后打开该文件,但我不知道如何测试它将删除域中的cookie,因为当我打开html文件时它是与域名无关。

这是我的代码:

//cookies we need
  const whitelist = [
  'example_cookie', 
  ]; 


function removeUnnecessaryCookies() {
  let decodedCookie = decodeURIComponent(document.cookie);   //check for special characters 
  let allCookies = decodedCookie.split(';'); //make array of all cookies in domain 

  for (var i = 0; i < allCookies.length; i++) {
    let cookie = allCookies[i];
    if (!whitelist.includes(cookie)) {
      deleteCookie(cookie); 
    }
  }
}

/* helper function to delete cookies */
function setCookie(cookieName, cookieValue, cookieExpiry) {
  let date = new Date();
  date.setTime(date.getTime() + (cookieExpiry*24*60*60*1000));
  let expires = "expires=" + date.toUTCString();
  document.cookie = cookieName + "=" + cookieValue + ";" + expires + ";path=/";
}

function deleteCookie(cookieName) {
  setCookie(cookieName, '', -100);
}

removeUnnecessaryCookies();

2 个答案:

答案 0 :(得分:0)

编写一个getCookie方法并对其进行测试。这是一个例子:

function setCookie(name, value, days) {
    var expiry = new Date()
    expiry.setTime(expiry.getTime() + (days * 24 * 60 * 60 * 1000))
    var expires = 'expires=' + expiry.toUTCString()
    document.cookie = name + '=' + value + ';' + expires + ';' + 'path=/'
}

function getCookie(name) {
    var name = name + '='
    var decodedCookie = decodeURIComponent(document.cookie)
    var ca = decodedCookie.split(';')

    for(var i = 0; i < ca.length; i++) {
        var c = ca[i]

        while (c.charAt(0) == ' ') {
            c = c.substring(1)
        }

        if (c.indexOf(name) == 0) return c.substring(name.length, c.length)
    }

    return false
}


// set cookie
setCookie('mycookie', '1', 365);

// get cookie
getCookie('mycookie');
getCookie('joe'); // returns false

答案 1 :(得分:0)

你最好的选择是启动一个localhost网络服务器(类似WAMP或MAMP或Mac应该做的事)并放弃一个cookie。查看浏览器中的域并复制该域。