react: typescript jest && enzyme】的更多相关文章

Install Jest 1.install jest dependencies jest @types/jest ts-jest -D 2.jest.config.js module.exports = { "roots": [ "<rootDir>/src" ], "transform": { "^.+\\.tsx?$": "ts-jest" }, "testRegex"…
1. initialize project create a folder project Now we'll turn this folder into an npm package. npm init -y This creates a package.json file with default values. 2. Install react typescript dependencies First ensure Webpack is installed. npm i webpack…
为什么要做单元测试 作为一个前端工程师,我是很想去谢单元测试的,因为每天的需求很多,还要去编写测试代码,感觉时间都不够用了. 不过最近开发了一个比较复杂的项目,让我感觉一旦项目大了.复杂了,而且还是多人维护一个应用,编写测试代码, 还是很有必要的.毕竟这样做完之后,后边的维护会轻松很多. 单元测试 测试代码的最小单元,一个函数就是一个单元 测试工具 主要用到的测试工具是 jest 和 enzyme jest . enzyme 介绍 jest 是 facebook 发布的一个开源的,基于 jasm…
1.为什么要使用单元测试工具? 因为代码之间的相互调用关系,又希望测试过程单元相互独立,又能正常运行,这就需要我们对被测函数的依赖函数和环境进行mock,在测试数据输入.测试执行和测试结果检查方面存在很多相似性,测试工具正是为我们在这些方面提供了方便. 所谓单元测试也就是对每个单元进行测试,通俗的将一般针对的是函数,类或单个组件,不涉及系统和集成.单元测试是软件测试的基础测试. 2.React 的标配测试工具 Jest. Jest主要有以下特点: 1.适应性:Jest是模块化.可扩展和可配置的.…
react,前端三大框架之一,也是非常受开发者追捧的一门技术.而 typescript 是 javascript 的超集,主要特点是对 类型 的检查.二者的结合必然是趋势,不,已经是趋势了.react 文档.typescript 文档都看过,例子也敲过了,对此也都有了一定的理解,但是把二者很好的结合在一起,还是遇到了一些问题.纯粹记录一些,当然也希望有优秀资源的,提供一下,分享一下.提前道谢了~ 学习曲线 首先,想到的是到 官网,看相关文档,会系统些. typescript 中文网 jsx ty…
React + Typescript领域初学者的常见问题和技巧 创建一个联合类型的常量 Key const NAME = { HOGE: "hoge", FUGA: "fuga" } as const; keyof typeof NAME // => "HOGE" | "FUGA" 创建常量值的联合类型 typeof NAME[keyof typeof NAME] // => "hoge" |…
一.使用脚手架搭建项目框架 1.首先使用脚手架搭建React项目(React+TypeScript+Umi.js) 在控制台输入命令:yarn create @umijs/umi-app 2.引入Antd组件 在控制台输入命令:yarn add antd 3.安装依赖 在控制台输入命令:yarn 4.启动项目 yarn start 二.项目目录与配置文件介绍 1.项目目录结构截图: 2.主要核心代码目录:/page 3.umi配置文件:.umirc.ts (官方文档:https://umijs.…
本文案例github:https://github.com/axel10/react-jest-typescript-demo 配置jest的react测试环境时我们可以参考官方的配置教程: https://jestjs.io/docs/zh-Hans/getting-started https://jestjs.io/docs/zh-Hans/tutorial-react 如果要兼容typescript项目,可以参考ts-jest提供的教程: https://github.com/basara…
1. 测试类型 单元测试:指的是以原件的单元为单位,对软件进行测试.单元可以是一个函数,也可以是一个模块或一个组件,基本特征就是只要输入不变,必定返回同样的输出.一个软件越容易些单元测试,就表明它的模块化结构越好,给模块之间的耦合越弱.React的组件化和函数式编程,天生适合进行单元测试 功能测试:相当于是黑盒测试,测试者不了解程序的内部情况,不需要具备编程语言的专门知识,只知道程序的输入.输出和功能,从用户的角度针对软件界面.功能和外部结构进行测试,不考虑内部的逻辑 集成测试:在单元测试的基础…
欢迎讨论与指导:) 前言 TDD -- Test-Drive Development是测试驱动开发的意思,是敏捷开发中的一项核心实践和技术,也是一种测试方法论.TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码 -- 引自百度百科. 在开发时,希望能够改动项目代码或者测试代码时能够自动进行测试,并停止上一次的测试(如果有的话).因此基本测试架构为gulp+mocha+enzyme:gulp进行文件监听,mocha为测试框架,enzyme是针对react组件…
React 中需要操作元素时,可通过 findDOMNode() 或通过 createRef() 创建对元素的引用来实现.前者官方不推荐,所以这里讨论后者及其与 TypeScript 结合时如何工作. React 中的元素引用 正常的组件中,可通过创建对元素的引用来获取到某元素然后进行相应操作.比如元素加载后将焦点定位到输入框. class App extends Component { constructor(props){ super(props); this.inputRef = Reac…
typescript报错集锦 错误:Import sources within a group must be alphabetized.tslint(ordered-imports) 原因:import名称排序问题,要求按照字母从小到大排序: 解决方案:修改 tslint.json 中 rules 的规则 "ordered-imports" 为 false 即可. "rules": { "ordered-imports": false } vs…
之前看了一下 TypeScript 的知识,但是一直没有上手,最近开始结合 React 和 TypeScript 一起尝试了一下,感受还是很好的,所以写一下笔记. 环境配置没有参考其他东西,就是看了下 Webpack 和 TypeScript 的官方文档,使用 Webpack 进行构建还是比较简单的. 环境构建 创建一个项目目录,然后切换当前目录到项目目录下: $ mkdir tsc && cd ./tsc 然后使用 npm 初始化项目: $ npm init -y 然后创建一些项目文件:…
Often when testing, you use the actual result to create your assertion and have to manually update it as you make changes to the feature. With Jest snapshot testing, you can let Jest do this part for you and write more tests and features faster and w…
React 中的默认 Props 通过组件的 defaultProps 属性可为其 Props 指定默认值. 以下示例来自 React 官方文档 - Default Prop Values: class Greeting extends React.Component { render() { return ( <h1>Hello, {this.props.name}</h1> ); } } // Specifies the default values for props: Gr…
本文简要介绍了如何在 Jest 单元测试中利用 Chrome Node DevTools 来辅助调试. 背景 代码是 TS 写的 所测功能无 UI 界面,出现Bug后不容易定位 用 console 式 debug 效率太低,需要打断点式调试 在 Jest 单测中进行 debugger 目前有两种方法: 1. IDE (如webstorm , VSCode)集成的 提供的 Debugger 功能: 2. Chrome DevTools 步骤 1)在project.json 中添加启动debug的脚…
Initialize the project create a folder project Now we’ll turn this folder into an npm package. npm init -y This creates a package.json file with default values. Install our dependencies First ensure Webpack is installed. npm install --save-dev webpac…
前期准备 1. 初始化项目 npx create-react-app react-components --template typescript 2. 安装依赖 使用哪种打包方案:webpack/rollup **webpack** * 代码分割:可以将打包后的代码分割成多个*.chunk.js,这些分块可以在用户使用过程中按需加载,这意味着用户可以有更好的交互体验. * 静态资源导入:图片.CSS 等静态资源可以直接导入到你的 app 中,就和其它的模块.节点一样能够进行依赖管理.因此,我们…
前言 项目到一段落,先来记录一下,本文以前端新手的角度记录React.TypeScript.Taro相关技术的开发体验以及遇到的问题和解决方法. 之前总说要学React(这篇博客:代码使我头疼之React初学习),这次项目需要做H5前端+小程序,我终于能用上React了~ 使用React的开发框架之前就听过京东的Taro,所以就这个了,直接开码. 关于React 不错,感觉比Vue的模板写法自由很多,我看Taro文档的例子都是class组件,但一开始「前端带师」就推荐我用function组件,现…
Because @types/react has to expose all its internal types, there can be a lot of confusion over how to type specific patterns, particularly around higher order components and render prop patterns. The widest and most recommended element type is React…
//父组件 import * as React from 'react'import { Input } from 'antd'const Search = Input.Searchimport "./index.less"import Child from "./compon/list" export default class ProjectList extends React.Component<IProps>{ constructor(props…
//父组件import * as React from 'react'import { Input } from 'antd'const Search = Input.Searchimport "./index.less"import Child from "./compon/list" interface IProps { MakeMoney?: () => void }export default class ProjectList extends Rea…
//父组件 import * as React from 'react'import { Input } from 'antd'const Search = Input.Searchimport "./index.less"import Child from "./compon/list" interface IProps { MakeMoney?: () => void //暴露方法} export default class ProjectList ext…
泛型类型 TypeScript 中,类型(interface, type)是可以声明成泛型的,这很常见. interface Props<T> { content: T; } 这表明 Props 接口定义了这么一种类型: 它是包含一个 content 字段的对象 该 content 字段的类型由使用时的泛型 T 决定 type StringProps = Props<string>; let props: StringProps; props = { //…
这个界面跟之前VUE做的一样.并无任何不同之处,只是用react重复实现了一遍. import React, { useState, useEffect } from 'react'; import { Row, Col, Table, Form, Cascader, Input, Button, Modal, message } from 'antd'; import { FormComponentProps } from 'antd/lib/form'; import http from '…
typescript 1 connected-react-router…
1.system-params-service import paramCache from "../common/param-cache" import RequestPromise from "./axios-service/RequestPromise"; export const fetchSystemParams = () => { return RequestPromise({url: '/api/system-parameters'}) } co…
多个输入框发生变化时,setState: this.setState({[e.target.name]: e.target.value} as componentState)…
链接 引言 在组件开发中,业务功能和基础组件一般分开放,比如在我们的项目中,components为基础组件, container为业务组件,但是在container中调用components中的组件时,必须通过相对路径如../../components/XXXX才能找到要用的基础组件,这里 ../../在开发时其实时一种浪费.为了解决这个问题,我们引入了webpack.resolve.alias功能. 目录结构 ├── package.json ├── postcss.config.js ├──…
import * as _ from "lodash"; import paramCache from "../common/param-cache" import RequestPromise from "./axios-service/RequestPromise"; export const fetchSystemParams = () => { return RequestPromise({ url: '/api/system-pa…