如何遍历嵌套在 ThemeProvider HOC 中的浅层组件?

2024-02-21

跟进该问题Github https://github.com/cssinjs/react-jss/issues/184,我有一个组件Comp导出时,包裹着injectSheet from reactjss. 请参阅上的设置代码沙箱 https://codesandbox.io/s/674jknj4z.

在单元测试中,我想断言该组件包含<a>,它确实做到了(请参阅codesandbox),但无论如何测试都会失败:

describe("<Comp /> component", () => {
  const wrapper = shallow(<Comp />);

  it("should render a <a>", () => {
    expect(wrapper.find('a')).to.have.length(1);
  });
});

I get Error: [undefined] Please use ThemeProvider to be able to use WithTheme。所以我的自然反应(也许不正确?)是将组件包裹起来ThemeProvider:

const wrapper = shallow(
  <ThemeProvider theme={{}}>
    <Comp />
  </ThemeProvider>
)

然后我得到AssertionError: expected { length: 0 } to have a length of 1 but got 0.

我尝试了很多方法,包括打电话dive, find or first额外shallow打电话,但我会always以结束Please use ThemeProvider to be able to use WithTheme:

// 1. dive(), as suggested in
// https://github.com/cssinjs/react-jss/issues/30#issuecomment-268373765
expect(wrapper.dive('Comp')).to.have.length(1);
expect(wrapper.dive('Comp').find('a')).to.have.length(1);
expect(wrapper.dive().find('a')).to.have.length(1);

// 2. find() / first(), as suggested in https://github.com/airbnb/enzyme/issues/539
expect(wrapper.find(Comp).shallow().find('a')).to.have.length(1);
expect(wrapper.first().shallow().find('a')).to.have.length(1);

这里有什么想法吗?我对 React 单元测试有点陌生,所以如果有人能在这方面启发我,我将不胜感激;)


对于任何仍在为此苦苦挣扎的人,one提出了可行的方法GitHub https://github.com/cssinjs/react-jss/issues/184#issuecomment-350227444。而不是测试包裹着的样式组件injectSheetHOC,导出独立组件并单独测试它

// Component.js
import React from 'react'
import injectSheet from 'react-jss'

const styles = {
  color: 'burlywood'
}

// named export for unit tests
export const Component = props => <h1>Component</h1>

// default export to be used in other components
export default injectSheet(styles)(Component)

这适用于大多数用例,因为通常情况下,您需要对普通组件及其逻辑进行单元测试,而不是对其任何关联的样式进行单元测试。所以在你的单元测试中只需做

import { Component } from './Component'

而不是(您将在代码库的其余部分中执行此操作)

import Component from './Component'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何遍历嵌套在 ThemeProvider HOC 中的浅层组件? 的相关文章

  • Javascript“this”在 IE 中丢失上下文

    以下在 firefox safari chrome 中工作正常 在 IE 中 this 似乎在 handleEvent 函数中丢失上下文 警报的结果是 object Window 这不是我想要的 当从handleEvent 输出时 this
  • Mongoose 查询执行后回调函数从未被调用

    以下是我的代码 mongoose connect mongodb localhost mydatabase var db mongoose connection db on error console error bind console
  • JavaScript 可以检测用户的浏览器是否支持 gzip 吗?

    我可以使用 JavaScript 来检测用户的浏览器是否支持 gzip 压缩内容 客户端 而不是 Node js 或类似内容 我正在尝试支持以下边缘情况 有很多可能的文件可以加载到特定的 Web 应用程序上 最好在应用程序运行时根据需要加载
  • Twitter Bootstrap - 下拉菜单 - 箭头键不适用于 Firefox 中的输入标签

    要求 我想在带有用户名和密码字段的下拉菜单中放置一个登录表单 我可以做到这一点 除了以下问题之外 一切正常 Issue 打字时我无法使用箭头键 上 下 firefox 当输入位于下拉代码之外时 这很有效 这适用于其他浏览器 例如 googl
  • 个人 Tumblr 帖子上的 Javascript

    我知道您可以编辑在 tumblr 博客上呈现所有帖子博客主页的 html AngularJS 但是 有什么办法可以添加自定义到各个帖子 我想在逐个帖子的基础上做一些 javascript 的东西 但似乎无法找到可以编辑代码的位置 或者 如果
  • tomcat 7.0.50 java websocket 实现给出 404 错误

    我正在尝试使用 Java Websocket API 1 0 JSR 356 中指定的带注释端点在 tomcat 7 0 50 上实现 websocket 以下是我如何对其进行编码的简要步骤 1 使用 ServerEndpoint注解编写w
  • 如何用 JavaScript 修复图像透视变形和旋转?

    我有一些用手机拍摄的图像 有没有可以拉直纸张照片并将其压平的 JavaScript 库 例如 我想创建一个矩形图像 该图像没有任何失真 换句话说我想知道如何用 JavaScript 修复透视变形和旋转 例如 我发现下面的示例图像来自this
  • 在 UIWebView 中禁用复制和粘贴

    几乎 我已经尝试了一切方法来禁用复制 粘贴UIWebView但对我来说没有任何作用 我正在加载我的UIWebView来自字符串 字符串数组 如下所示 webView loadHTMLString NSString stringWithFor
  • 我应该如何实现将状态保存到 localStorage?

    CODE var React require react var Recipe require Recipe jsx var AddRecipe require AddRecipe jsx var EditRecipe require Ed
  • 使用 Javascript/Node.js 在代码内执行 mongoimport

    node js javascript 中是否有任何库可供个人使用mongoimport在代码中 据我了解 mongoimport 有点像 exe 您必须先执行它 然后才能使用其文本输入环境 是否可以在我的代码中执行 mongoimport
  • JavaScript 错误:MVC2 视图中的条件编译已关闭

    我试图在 MVC2 视图页面中单击时调用 JavaScript 函数 a href Select a JavaScript 函数 function SelectBenefit id code alert id alert code 这里 b
  • 从 Flask 运行 NPM 构建

    我有一个 React 前端 我想在与我的 python 后端 API 相同的源上提供服务 我正在尝试使用 Flask 来实现此目的 但我遇到了 Flask 找不到我的静态文件的问题 我的前端构建是用生成的npm run build in s
  • 使用 nockjs 和 jest 进行 Promise/异步单元测试的代码覆盖率问题

    我使用 NockJS 和 Jest 为 React 应用程序编写了一个简单的 API 调用单元测试 如下所示 AjaxService js export const AjaxService post url data headers gt
  • 从请求url获取hash参数

    我有这样的网址 http www coolsite com daily plan id 1 http www coolsite com daily plan id 1解析该字符串并读取哈希值 id 之后的值 的最简单方法是什么 谢谢 在客户
  • 如何将项目插入到特定索引处的空数组中?

    我想将一个项目插入到空数组的指定索引中 我看到有 Array prototype splice 方法 但是 如果我在空数组上使用 splice 它只会添加项目来结束数组 如下所示 var a a splice 3 0 item 3 cons
  • 什么时候可以使用Javascript,什么时候不可以?

    不使用太多 javascript jquery 是个好习惯吗 我们应该尽可能避免它 为了良好的可访问性 吗 什么时候可以使用 JavaScript 什么时候不能在网页设计和开发中使用 JavaScript 在什么场景 什么条件下 Updat
  • 如何使用 fetch() 和 WhatWG 流获取文件上传进度

    注意 我并不是在寻找任何替代方案 我知道这可以通过 XMLHttpRequest 来完成 我也不关心浏览器支持 我只想了解新的 即将推出的标准 我有一个File https developer mozilla org en US docs
  • 在 Meteor 应用程序中实现 MongoDB 2.4 的全文搜索

    我正在考虑向 Meteor 应用程序添加全文搜索 我知道 MongoDB 现在支持此功能 但我对实现有一些疑问 启用文本搜索功能的最佳方法是什么 textSearchEnabled true 在 Meteor 应用程序中 有没有办法添加索引
  • javascript:完全删除top.location.hash?

    如果我的地址栏中已经有一个哈希值 例如domain com whatever 我打电话 top location hash wathever 被转换为domain com 没有任何内容 是否可以完全删除哈希值 所以没有 left 因为如果我
  • 深层嵌套 Flexbox 布局是否会导致性能问题?

    我一直在开发一个 ReactJS 项目 其中我使用 Flexbox 布局创建了大部分组件 由于使用 React 我们可以拥有深度嵌套的组件 因此我的布局具有嵌套的 Flexbox 布局 现在我的问题是 这对性能有任何问题吗 在一个页面上 有

随机推荐

  • .R中的第一个函数

    我不明白 R 中 First 函数的意义 我的原因是 Rprofile 中的任何代码都将在 R 启动时被获取并执行 this First lt function library devtools and this library devto
  • WordPress:如何按 ACF 自定义字段对内容进行排序?

    通过使用高级自定义字段插件 我创建了一个包含 6 种成员资格类型的选择下拉列表 我使用此自定义字段的所有 列表 都被分配为 6 个字段之一 我想通过以下方式显示所有 列表 终极加号最终的专业的商业的商业 Free 按照这个特定的顺序 那些支
  • 将 JavaScript 变量发送到 PHP 变量 [重复]

    这个问题在这里已经有答案了 首先我认为我必须将 JavaScript 转换为 PHP 但后来我发现我不能 因为服务器和客户端执行 所以现在我只想发送一个变量 到 PHP 变量 当我点击一个按钮时 JavaScript 中的该函数就会执行 现
  • Java 和 .Net 正则表达式

    Java 和 Net Framework 正则表达式模式之间的区别 我正在尝试转换我的 Net Framework 但模式无效 谁能指出正则表达式模式的主要区别 例如我们如何命名java中的分组结构等等 有很多差异总结在这里 http ww
  • 比较 C# 中的双精度值

    I ve a double变量称为x 在代码中 x被赋值为0 1我在 if 语句中检查它比较x and 0 1 if x 0 1 不幸的是它没有进入if陈述 我应该使用Double or double 这背后的原因是什么 您能为此建议一个解
  • Selenium - 无响应脚本错误 (Firefox)

    这个问题以前曾被问过 但给出的答案似乎对我不起作用 问题是 当使用 Selenium 打开页面时 我会收到许多 无响应脚本 弹出窗口 引用不同的脚本 当我使用不带 Selenium 的 Firefox 打开页面时 没有出现任何错误 另外 奇
  • 我可以通过编程方式设置 Mercurial 配置选项吗?

    我正在寻找一种设置方法 hgrc配置项 而无需实际编辑文本文件 我正在尝试标准化设置hgrc跨多个开发人员 我想要一个像这样的命令 hg config ui username foo 但这也将该配置更改保存到hgrc file 看起来这应该
  • 通过 javascript 添加的输入字段不在 PHP $_POST 变量中。如何解决这个问题?

    我在 html 表中有一个表单 我通过 jquery 动态地将输入字段添加到表单中 当我在提交表单时进行 var dump 时 POST 数组没有添加的字段 为什么会发生这种情况 这是我的 js 的样子 add more del areas
  • n 个集合的所有组合的交集

    我需要帮助找到一种有效的算法来解决这个问题 Given n未排序的整数集 找到所有可能的组合n以及它们的交集 例如 Input n 3 Set 1 1 10 6 11 14 3 Set 2 3 7 11 9 5 Set 3 11 6 9 1
  • Protractor - 框架中的错误处理

    我们如何处理基于 Protractor Cucumber 的框架中的错误 有断言失败 这是真正的失败 并且 javascript 代码中存在错误 例如 未找到元素 数组为空 未定义的内容等 我希望以优雅的方式处理后者 目前量角器测试因上述错
  • 限制批处理脚本中生成的进程数量

    我遇到的情况与中描述的情况非常相似这个问题 https stackoverflow com questions 17236456 limiting the number of subshells spawned 但是是批量的 不是外壳 我制
  • 如何使用java解决selenium webdriver中的超时错误?

    My Html
  • macOS 和 XCode 中开发的辅助权限

    有没有办法在开发过程中默认为我在 XCode 中开发的应用程序提供可访问权限 我的想法是 我可以按下运行键并测试新代码 而无需跳过设置中的麻烦 对于部署来说显然这是行不通的 但是对于开发来说有没有办法将应用程序列入白名单 EDIT 这是我发
  • 在 Rails 3 中过滤 has_many :through 关系中的子对象

    问候 我有一个应用程序 其中Companies and Users需要通过某种方式彼此归属CompanyMembership模型 其中包含有关成员资格的额外信息 具体来说 用户是否是公司的管理员 通过布尔值admin 代码的简单版本 cla
  • 如何获取PDF的书签并将书签添加到新的pdf中?

    我正在将一个 PDF 合并到其他 PDF 它工作正常 但最终 PDF 中缺少书签 以下是PDF生成代码 Create One Page PDF with some text from reportlab pdfgen import canv
  • 使用标准库对 Agda 中的对/列表进行字典顺序排序

    Agda标准库包含一些模块Relation Binary Non StrictLex 目前仅适用于Product and List 我们可以使用这些模块轻松构建一个实例 例如IsStrictTotalOrder对于自然数对 即 open i
  • 我想用动画将 imageview 放置在不同的位置

    我试图在不同的位置设置多个图像 这是我的代码 任何人都可以帮助我在不同的位置设置 imageview void viewDidLoad super viewDidLoad frameX 45 0f frameY 60 0f imagearr
  • 如何使用迭代器迭代二维向量? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 all 我在 C STL 中使用向量来存储我的数据 我将它们传递到函数中或从函数中返回它们 然而 随着数据大小的增长 程序越来越慢 因此
  • 为什么 max 比 sort 慢?

    我发现max比sortPython 2 和 3 中的函数 Python 2 python m timeit s import random a range 10000 random shuffle a a sort a 1 1000 loo
  • 如何遍历嵌套在 ThemeProvider HOC 中的浅层组件?

    跟进该问题Github https github com cssinjs react jss issues 184 我有一个组件Comp导出时 包裹着injectSheet from reactjss 请参阅上的设置代码沙箱 https c