Giter VIP home page Giter VIP logo

mycar_demo's Introduction

JEST 配置中的坑点

一,步骤

1.1 安装 npm install jest enzyme --save-dev
    注释:jest 为测试运行环境,enzyme为类jquery操作API
    
1.2 配置package.json jest

    "jest": {
     "verbose": true,
     "testURL": "http://localhost",
     "moduleFileExtensions": [
       "js",
       "jsx"
     ],
     "moduleNameMapper": {
       "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/__mocks__/fileMock.js",
       ".*\\.(css|less|scss)$": "<rootDir>/__mock__/stub.css"
     },
     "transform": {
       "^.+\\.jsx?$": "babel-jest"
     }
    } `  


1.3 配置package.json 中的测试script

    "scripts": {
        "start": "http-server & webpack -w --config webpack.pro.js",
        "pro": "webpack -p --config webpack.pro.js --progress",
        "hot": "node server_hot.js",
        "test": "jest" 
      },

二、测试demo,见__test__下以spec.js或test.js结尾的文件

三、运行测试 npm run test //基于package.json

四、坑点

4.1 如果照抄网上demo,第一个遇到的问题是 localstorage 没有权限
    SecurityError: localStorage is not available for opaque origins
    
    问题原因:因为运行的测试案例无法知道要去那个浏览器的域名下检测;
    解决办法:在package.json 下的jest中配置 "testURL": "http://localhost",


4.2 第二个问题是 import jsx文件 错误
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import React, { Component } from 'react';                                                                                      ^^^^^^
    SyntaxError: Unexpected token import

    问题原因:jest检测的时候默认检测文件未配置
    解决办法:在package.json 下的jest.transform中配置(jsx?正则)   "^.+\\.jsx?$": "babel-jest"


4.3 第三个问题是 css class 报错,如下
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){.button {                                                                            ^
    SyntaxError: Unexpected token .
    
    问题原因:无
    解决办法:设置一个空文件,里面放一个空css, 并在jest 的moduleNameMapper下配置
         ".*\\.(css|less|scss)$": "<rootDir>/__mock__/stub.css"

五、字段解释

5.1 verbose 细节展示
5.2 testURL 测试域名
5.3 moduleFileExtensions 类似webapck resolve,简写后缀
5.4 moduleNameMapper mock数据路径
5.5 transform 要把那些文件用babel-jest转化成es6\es7的标准javascript

.babelrc

babel-loader插件比较多,写在webpack.config.js 的rule中太多太乱,不如单独取出来配置

eslint

1. 配置风格: .eslintrc 中 extends字段,前提必须下载了该标准库,如"eslint-config-airbnb";
2. 嵌入eslint: 在webpack.config.js中 设置js|jsx 的loader "eslint-loader";
3. 单独设置某个检测点:在.eslintrc 中 配置不需要的检测为"0",如"camelcase: 0" 即表示跳过驼峰检测;
4. 代码内设置检测点:设置/* eslint camelcase: 0 */, 将不对以下代码做该项规范检测,如下
    /* eslint camelcase: 0 */
    const myname = 'Chou'

postcss

1. postcss.config.js 从webpack.config.js 中单独提取,类似 .babelrc
2. autoprefix, 自动添加css3前缀
3. postcss-sprite, 自动合并图片(要求css严格按照切图编写,不实用)

ICONFONT

http://www.iconfont.cn/manage/index?manage_type=myprojects&projectId=777161

Webpack4配置中的坑点

1. ExtractTextPlugin (用于提取css)插件不能用了,用MiniCssExtractPlugin 代替
2. HtmlWebpackPlugin 需要升级一下
3. 热加载的组件react-hot-loader不能喝react16混用,只能降级到react15
4. 各种热加载顺序:
    4.1 react-hot-loader 必须写在所有jsx? loader之前 (否则热加载js无效)
    4.2 style-loader 必须写在所有s?css loader之前 (否在代码报错)
    4.3 css-hot-loader 必须写在第二个s?css loader处 (否则热加载css无效)

mycar_demo's People

Watchers

James Cloos avatar fywlyy avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.