javascript - 如何在 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
})
解决方案
不必下载任何deps,只需使用:
Object.defineProperty(window.document, 'cookie', {
writable: true,
value: 'myCookie=omnomnom',
});
(writable
需要设置为真)
推荐阅读
- css - 在材质工具栏上水平显示 css 线
- c++ - 为什么链接器无法解析符号?
- reactjs - 如何使用 Webpack 构建显示 console.logs?
- aws-codebuild - 无法更新 CodeBuild 中的服务角色,出现错误“该策略未附加到角色”
- java - 可选的 Spring web NullPointer 异常
- javascript - 如何在javascript中附加孩子的孩子?
- java - 如何在 AWS Lambda Java 代码中启用断言?
- c# - 如何使用 C# 代码中的产品代码或通过命令行卸载程序
- c - OpenMP 中的多个函数与 C
- javascript - 公共 LinkedIn 页面需要在 Puppeteer 中进行身份验证,但在 Chromium/Chrome 中手动粘贴 url 时不需要