首页 > 解决方案 > 如何在 JEST 中模拟 Cookie.get('language')

问题描述

我有一个函数可以在 cookie 中设置语言并获取它的某些功能。如何正确设置语言的值以在 JEST 中进行测试

function resolveLanguage () {
  // browser cookie is checked to see if there is a value for language
  const lang = Cookie.get('language')

  // If no lang, it is defaulted to en 
  return lang || 'en'
}

现在我想在 JEST 中测试它

it('can resolve the language using a cookie', () => {
      Cookie.__defineGetter__("language", function() {
        return 'fr'
      })
      // console.log(Cookie.language) //returns fr
      // console.log(Cookie.get('language')) //returns fr
      expect(module.resolveLanguage()).toBe('fr') ---FAILS because it returns en
    })

标签: javascriptjestjs

解决方案


不必下载任何deps,只需使用:

Object.defineProperty(window.document, 'cookie', {
  writable: true,
  value: 'myCookie=omnomnom',
});

writable需要设置为真)


推荐阅读