javascript - DOM 节点和 javascript 命名空间之间有什么关系?

标签 javascript reactjs jestjs jsdom react-testing-library

在此示例中,为什么变量 foo 没有引发 ReferenceError?没有变量声明,但在 DOM 渲染后它显然在范围内。 DOM 节点 id 和 javascript 命名空间之间有什么关系?我正在使用 jest 运行它。

import React from 'react';
import { render } from '@testing-library/react'

test('renders a div', () => {
  const { utils } = render(<div id="foo"/>)
  expect(foo).toBe(true)
})

Jest 报告:

Expected: true
Received: <div id="foo" />

我真的希望测试会崩溃,因为在我的真实示例中,我不小心将一个 undefined variable 传递给 expect(),它恰好共享渲染的 DOM 节点 id 的名称。

最佳答案

具有 id 的元素成为全局变量

不是同一个问题,但您问题的答案是另一个 SO 问题:

Do DOM tree elements with ids become global variables?

关于javascript - DOM 节点和 javascript 命名空间之间有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61217216/

相关文章:

vue.js - 如何对将 DOM 元素附加到 HTML 主体的 Vue 组件进行单元测试?

javascript - Cognito 用户池 "username"显示为 id 而不是电子邮件,如何解决?

javascript - 范围内的裁剪线

javascript - 了解 'arr.filter(callback[, thisArg])' 语法

javascript - ReactJS如何在刷新页面时保持状态值

reactjs - 警告 : Use the 'defaultValue' or 'value' props on <select> instead of setting 'selected' on <option>

reactjs - 通过开 Jest 模拟测试 axios 获取未定义

javascript - 通过 Twitter Bootstrap 按钮类进行 jQuery 切换

javascript - 功能组件中的默认功能 Prop

reactjs - 为主题提供者 Jest 手动模拟