Jest内联testEnvironmentOptions不生效问题求助
解决Jest 29内联testEnvironmentOptions不生效的问题
问题分析
全局配置testEnvironmentOptions的URL后,单个测试的@jest-environment-options注解被忽略,测试仍使用全局URL,这通常是JSDoc注解解析格式问题或关联关系不明确导致的。
解决方案
1. 修正JSDoc注解格式
JSDoc中传递JSON配置时,需用单引号包裹整个JSON字符串,避免双引号解析冲突:
/** * @jest-environment jsdom * @jest-environment-options '{"url": "https://jestjs.io/"}' */ test('use jsdom and set the URL in this test file', () => { expect(window.location.href).toBe('https://jestjs.io/') })
2. 确保注解与测试直接关联
注解块必须与目标测试函数/describe块直接相邻,中间不要留空行,让Jest能正确识别注解的作用范围:
/** * @jest-environment jsdom * @jest-environment-options '{"url": "https://jestjs.io/"}' */ test('check custom URL', () => { expect(window.location.href).toBe('https://jestjs.io/') })
3. 将注解应用到测试组
如果单个测试的注解仍不生效,可将注解移至describe块上,作用于整个测试组:
/** * @jest-environment jsdom * @jest-environment-options '{"url": "https://jestjs.io/"}' */ describe('tests with custom jsdom URL', () => { test('verify window location', () => { expect(window.location.href).toBe('https://jestjs.io/') }) })
4. 验证版本一致性
确保jest和jest-environment-jsdom的版本完全一致(如均为29.3.1),版本不匹配可能导致注解解析异常。
备选临时方案
如果内联注解始终无法生效,可在测试中手动修改window.location:
test('use custom jsdom URL', () => { Object.defineProperty(window.location, 'href', { writable: true, value: 'https://jestjs.io/' }) expect(window.location.href).toBe('https://jestjs.io/') })
内容的提问来源于stack exchange,提问作者pcvnes
相关产品推荐
相关产品推荐

