Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Jest不变违规

Jest不变违规
EN

Stack Overflow用户
提问于 2018-12-25 20:06:29
回答 2查看 1.9K关注 0票数 1

简单地使用react hooks in beta在使用jest时不起作用,并导致错误

不变冲突:钩子只能在函数组件的主体内调用。

尽管环顾四周,我没有看到使用react钩子的Jest的工作示例。是的,我知道它是测试版,但让我们现在标记它。

https://github.com/ghinks/jest-react-hook-issue.git

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const MyDiv = () => {
  const [count, setCount] = useState(0)
  const clickHandler = () => { setCount(count + 1); 
  console.log(`clicked ${count}`) }
  return (
    <div onClick={clickHandler}>
      ClickMe {count}
    </div>
  )
}

即使是简单的测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { MyDiv } from './App';

describe('Test Component using hooks', () => {
  test('MyDiv', () => {
    const div = MyDiv();
    expect(div).toMatchSnapshot();
  })
});

将失败,并出现不变错误。

我希望这能真正起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-26 19:35:01

看起来像是简单的更改

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
describe('Test Component using hooks', () => {
  test('MyDiv', () => {
    expect(<MyDiv/>).toMatchSnapshot();
  })
});

解决了这个问题

票数 1
EN

Stack Overflow用户

发布于 2018-12-25 20:54:52

问题在于错误说明了什么。函数组件不应该被直接调用。

它应该如the reference所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import renderer from 'react-test-renderer';

...
const myDiv = renderer.create(<MyDiv/>).toJSON();
expect(myDiv).toMatchSnapshot();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53925317

复制
相关文章
Apache日志中的处理时间
Apache的日志有很多可以自己定义的项目,其中一个 %T 能够显示出服务器处理请求所用的时间。我就是对这个的定义发生了疑问,所以做了一些考证。
大江小浪
2018/07/25
1.4K0
性能分析之可悲的响应时间
不止一次并且在不同的场合都被问到了响应时间该如何分析和定义的问题。问题大概是两种:
高楼Zee
2019/07/17
1.7K0
性能分析之可悲的响应时间
【性能工具】LoadRunner性能测试-90%响应时间
解决方案:第90 个百分位是90%的数据点较小的值。 第 90 个百分位是统计分布的度量,与中位数不同。中位数是中间值。中位数是 50% 的值较大和 50% 较小的值。第 90 个百分位告诉您 90% 的数据点较小而 10% 较大的值。 统计上,要计算第 90 个百分位值: 1. 按事务实例的值对事务实例进行排序。 2. 删除前 10% 的实例。 3. 剩下的最高值是第 90 个百分位数。 示例: 有十个事务“t1”实例,其值为 1、3、2、4、5、20、7、8、9、6(以秒为单位)。 1. 按值排序——1,2,3,4,5,6,7,8,9,20。 2. 删除前 10%——删除值“20”。 3. 剩下的最高值是第 90 个百分位数——9 是第 90 个百分位数。 PS :这里有点类似某些比赛的评分规则中,去掉了最高分; 第 90 个百分位值回答了以下问题:“我的交易中有多少百分比的响应时间小于或等于第 90 个百分位值?” 鉴于上述信息,以下是 LoadRunner 如何计算第 90 个百分位数。 在分析 6.5 中: 事务的值在列表中排序。 90% 取自值的有序列表。取值的地方是 将数字舍入到小值:0.9 *(值的数量 - 1)+ 1 在 Analysis 7 及更高 版本中:每个值都计入一个值范围内。例如,5 可以在 4.95 到 5.05 的范围内计数,7.2 可以在 7.15 到 7.25 的范围内计数。90% 取自其中和之前的交易数量 >= ( 0.9 * 值数量) 的值范围。 方法的这种差异可能导致不同的 90% 值。同样,这两种方法都会导致第 90 个百分位定义的正确值。但是,计算这些数字的算法在 LoadRunner 7 及更高版本中发生了变化。因此 ,系统有性能平均响应时间是绝对的。表示因为平均事务响应时间必须满足性能需求,可见的性能需求已经满足了用户的要求。
Luga Lee
2022/03/25
1.4K0
[linux][x86]LOCK指令的影响
前言: 一般多线程并行操作,对个别的变量需要使用原子操作,经常用到__sync_fetch_and_add类似的函数,来避免CPU操作各自的cache没有同步内存而造成的数据数错。 在x86平台上,反汇编__sync_fetch_and_add就可以看到,实际上是lock addq $0x1,(%rax)。 如果多个CPU并行使用__sync_fetch_and_add,会不会造成性能问题呢?LOCK指令的影响范围是多少呢?同一个CORE的两个THREAD,同一个SOCKET的两个CORE,以及两个SOCKET之间呢? 分析: 1,sample code 手写一段代码,两个thread分别可以绑定在两个CPU上,一起跑__sync_fetch_and_add,看看时间上是不是会受到影响。需要注意的是“long padding[100]; // avoid cache false-sharing”这行,加上padding用来避免CPU cache的false-sharing问题。 #include <sched.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdint.h> #include <sys/time.h> #include <pthread.h> void bench_atomic(long *l) { long loop; struct timeval start, end; suseconds_t eplased = 0; gettimeofday(&start, NULL); // benchmark for (loop = 0; loop < 0x20000000; loop++) { __sync_fetch_and_add(l, 1); } gettimeofday(&end, NULL); eplased = (end.tv_sec - start.tv_sec)*1000*1000 + end.tv_usec - start.tv_usec; printf("ATOMICC test %ld msec\n", eplased); } void *routine(void *p) { long *l = (long*)p; cpu_set_t my_set; CPU_ZERO(&my_set); CPU_SET(*l, &my_set); sched_setaffinity(0, sizeof(cpu_set_t), &my_set); *l = 0; bench_atomic(l); } int main(int argc, char **argv) { pthread_t p0, p1; long cpu0 = 4; long padding[100]; // avoid cache false-sharing long cpu1 = 8; if (argc != 3) { printf("%s CPU CPU\n", argv[0]); return 0; } cpu0 = atoi(argv[1]); cpu1 = atoi(argv[2]); padding[0] = cpu0; printf("main thread run on CPU %ld, worker thread run on CPU %ld and CPU %ld\n", padding[0], cpu0, cpu1); bench_atomic(&padding[0]); pthread_create(&p0, NULL, routine, &cpu0); pthread_create(&p1, NULL, routine, &cpu1); pthread_join(p0, NULL); pthread_join(p1, NULL); printf("result %ld and CPU %ld\n", cpu0, cpu1); return 0; } 2, cpu topology 使用lscpu判断cpu的分布
皮振伟
2018/11/30
2.1K0
[linux][x86]LOCK指令的影响
为nginx日志加入上游响应时间
生产环境发现一个请求报了超时.查询应用日志在收到请求后1秒内就做出了响应;查看nginx访问日志发现那笔请求状态为499,经查是因为请求端等待超时主动掐断连接.由于之前nginx只记录了默认的访问日志格式,所以无法排查究竟是是否为上游超时.为了找到问题原因遂需要记录一下上游的响应时间: 配置如下: 1.定义新的日志格式(在默认格式之后加上请求/响应时间,管道) log_format access '$remote_addr - $remote_user [$time_local] '
码农二狗
2018/06/29
1.7K0
性能测试中过滤异常的响应时间
众所知周,及时排除了JVM尚未完全预热的因素以外,在所有请求中总有一些异常请求响应时间,今天分享一个案例:通过过滤测试刚开始时候的响应时间记录来提升整体数据的准确性。
FunTester
2022/04/01
7780
TCP 应答时间参数对网络性能的影响
TCP 应答延迟的概念 TCP 应答延迟是 TCP 传输层的一个优化策略,为了降低网络数据包压力,减少小数据包而进行的一个处理,称之为 Nagle 演算法。从本质上讲,几个 应答响应可能结合在一起,成一个响应,减少协议开销。然而,在某些情况下,该技术可以降低应用程序的性能。 通常情况下,在服务器之间收发数据包,依据 TCP 协议,节点 A 向节点 B 发送一个数据报文 , 节点 B 收到这个数据报文以后,会向节点 A 返回一个 acknowledge 信息。然后,对于 A 节点向 B 节点发送的数据报文,可
魏新宇
2018/03/22
2.6K0
TCP 应答时间参数对网络性能的影响
Apache访问日志切割+静态元素过期时间
Apache访问日志切割 : 日志一直记录总有一天会把整个磁盘占满。假如,有个系统每天都要往一个目录里面写日志,一次1G,100G的硬盘也就100天就没有了,所以有必要让它自动切割,并指定任务计划删除老的日志文件。 [[email protected]02 haha.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf 在配置文件下面更改原有的 CustomLog "logs/haha.com-access_log" combined env
老七Linux
2018/05/09
7120
性能分析之响应时间拆分(TCP视角)
因为在性能测试过程中,我们经常会遇到响应时间长的情况。在我的性能工程逻辑中,一直在说的一个话题就是响应时间的拆分。但还是有很多人不理解响应时间应该如何拆分到具体的某个主机或某个节点上去。 响应时间的拆分有几个不同的角度。
高楼Zee
2021/04/22
1.2K0
CentOS 8 Apache 启用 SSL
在 CentOS 8 安装成功后,如果希望启用 ssl,你需要执行下面的一些操作。
HoneyMoose
2020/10/06
1.5K0
CentOS 8 Apache 启用 SSL
Intel PAUSE指令变化影响到MySQL的性能,该如何解决?
MySQL得益于其开源属性、成熟的商业运作、良好的社区运营以及功能的不断迭代与完善,已经成为互联网关系型数据库的标配。可以说,X86服务器、Linux作为基础设施,跟MySQL一起构建了互联网数据存储服务的基石,三者相辅相成。
美团技术团队
2020/04/26
1.1K0
漫画:volatile对指令重排的影响
上一期介绍了volatile关键字对JVM主内存和工作内存的影响,没看过的小伙伴们可以点击下面链接:
小灰
2022/07/05
2920
漫画:volatile对指令重排的影响
[译] 首字节时间 (TTFB) 如何影响了网站性能
原文:https://www.medianova.com/en-blog/2019/08/06/how-time-to-first-byte-ttfb-impacts-your-sites-performance
江米小枣
2020/06/15
2.9K0
Apache如何启用HTTP2?
Apache虽然市场份额渐渐被Nginx赶超,但其仍有Nginx取代不了的优点,特别是它的Rewrite和动态处理,是Nginx无法比拟的,很多人说Apache无法承载高并发,其实Apache在2.4的版本中,采用了Event MPM的工作模式,对于处理高并发有了很高的提升。但是,如果你是需要用到反向代理和很大的高并发项目;或者用低配置的特价虚拟主机,建议你还是选Nginx,毕竟还是轻量。
李俊鹏
2021/02/23
1.9K0
Apache如何启用HTTP2?
Apache启用mod_expires模块
 mod_expires可以减少10%左右的重复请求,让重复的用户对指定的页面请求结果都CACHE在本地,根本不向服务器发出请求。
Java架构师必看
2021/03/22
6360
APP常见性能测试点之响应时间
  软件的响应时间和响应速度直接影响到用户的体验度,如果一个软件,迟迟加载不出来,会直接影响到软件的日活、留存。因此对于一个软件,对响应速度测试是必不可少的。
顾翔
2021/07/22
3K0
高性能网站架构方案(二)——优化网站响应时间
高性能网站架构方案(二)——优化网站响应时间 (原创内容,转载请注明来源,谢谢) 一、概述 优化网站响应时间是保证网站受用户关注的要点,主要方案有: 1、减少HTTP请求 当需要加载图片、css、js等内容时,尽量减少加载的次数。可以合并加载,另外当改动量很少时,尽量将内容进行缓存。 图片的缓存可以设定更新时间,定时去服务器查看是否有需要更新的内容。通常可以定时在1周甚至更久的时间。 CSS、JS的缓存,通常可以通过文件名的方式来判断是否需要重新加载。当网页确定需要加载某些js和c
用户1327360
2018/03/07
9300
在 Confluence 中启用 HTTP 响应压缩
Confluence 能够支持 HTTP 的 GZip 传输编码。这个意味着 Confluence 将可以把数据压缩后传输给用户,这种配置能够针对不稳定的互联网状态下的传输速度缓慢和不稳定并且能够降低 Confluence 服务器的带宽的消耗。
HoneyMoose
2019/01/30
1.1K0
点击加载更多

相似问题

反应-Redux/Jest不变违规:找不到“商店”

112

React /酶法:运行Jest /酶测试时不变的违规错误

20

不变违规-条件渲染

216

不变违规:反应错误#130

20

ReactDnD:“不变违规: addComponentAsRefTo”错误

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文