Maison interface Web js tutoriel Comment tester des applications JavaScript avec Jest

Comment tester des applications JavaScript avec Jest

Nov 27, 2017 am 11:55 AM
javascript jest 应用

我们知道,Jest 是 FaceBook 用来测试 JavaScript 应用的一套测试框架,那么也包含了一些应用,它的优点其中就包括了对于React 的支持,也很容易支持其他框架,那么今天我们就教大家怎么用Jest测试JS应用

从最简单的开始,我们可以看看如何用 Jest 测试纯 JS 项目。

假设你需要测试 sum.js:

export default (a, b) => a + b
Copier après la connexion

你只需要对应地新建一个 sum.test.js[1]:

import sum from './sum'
test('sum', () => {
  expect(sum(2, 3)).toBe(5)
})
Copier après la connexion

关于这里的 `expect` 语法

然后在终端运行 jest 命令的时候就会自动找到这个文件,执行这里面的测试:

额,报错了,原来 Jest 默认只支持你所使用的 node.js 版本所支持的 JS 特性,例如 import export 就不支持,所以要么你的代码使用系统 node.js 兼容的语法写 (也就是使用 require),要么在这里使用 Babel 转义一下。

在 Jest 中使用 Babel 很简单,只需要安装 babel-jest 并新建一个 .babelrc 加入你想要的配置就行了,Jest 会自动使用 babel-jest。这里我们简单地使用 babel-preset-env 即可,对应的 .babelrc 是:

{
  "presets": ["env"]
}
Copier après la connexion

然后重新运行 jest 测试便通过了:

jest 2

对于 React 应用,基本和纯 JS 项目类似,不过你需要在 .babelrc 中配置对 JSX 的支持,在大多数时候你的项目本身就已经在使用 .babelrc 了,所以这一步甚至也省略掉了。

资源文件

当你要测试的代码引用了非 JS 文件时,Jest 就不知道如何使用这些文件了,例如你的 Webpack 项目中的一个文件:

import './style.css'

正如你需要在 Webpack 中配置了 css-loader 一样,你也需告诉 Jest 如何处理 CSS 文件。

{
  "jest": {
    "transform": {
      "^.+\\.(js|jsx)$": "babel-jest",
      "^.+\\.css$": "<rootDir>/jest/css-transform.js"
    }
  }
}
关于 babel-jest
对应的 ./jest/css-transform.js
// 大多数测试并不关心 CSS 文件里的内容
// 所以这里我们直接返回一个空的对象
module.exports = {
  process() {
    return &#39;module.exports = {};&#39;
  },
  getCacheKey() {
    // The output is always the same.
    return &#39;css-cache&#39;
  }
}
Copier après la connexion

类似地,你可以使用 transform 来设定如何处理其它类型的文件,比如 .vue[2] .svg 文件。

浏览器 API

假设你要测试的是一个 Web 应用,依赖于一些浏览器 API 比如 window document,它在 Jest 中同样可以正常运行,因为 Jest 默认使用了 js-dom 来模拟浏览器环境,不需要浏览器环境时可以通过使用命令行参数 --env node 或者配置文件来禁用。

Snapshot 测试

当你期望某个值不会改变的时候,可以使用 snapshot 测试。简单地说,它就是记录这个值的状态到本地自动生成的 snapshot 文件里,然后在下一次测试中用新的值来和其进行对比。这对 UI 之类的测试很有帮助:

import React from &#39;react&#39;
import Link from &#39;../Link.react&#39;
import renderer from &#39;react-test-renderer&#39;
it(&#39;renders correctly&#39;, () => {
  const tree = renderer
    .create(<Link page="http://www.facebook.com">Facebook</Link>)
    .toJSON()
  expect(tree).toMatchSnapshot()
})
Copier après la connexion

这确保了 Facebook 渲染出的内容不会出错。

当你更改了 组件的逻辑,需要更新 snapshot 文件时,可以加上 --updateSnapshot 或者 -u 来更新。

类似的,Snapshot 测试不止于 UI 测试中,假设你写了个 Markdown 解析器,你可以用它来确保解析出的内容不会改变:

import renderMarkdown from &#39;./my-markdown-parser&#39;
test(&#39;render correctly&#39;, () => {
  const html = renderMarkdown(&#39;# markdown code&#39;)
  expect(html).toMatchSnapshot()
})
Copier après la connexion

相信看了这些案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!


相关阅读:

怎么用CSS3做出灯光照射显示文字动画

css3点击显示涟漪特效

CSS3怎么制作蝴蝶飞舞的动画

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment annuler la suppression de l'écran d'accueil sur iPhone Comment annuler la suppression de l'écran d'accueil sur iPhone Apr 17, 2024 pm 07:37 PM

Vous avez supprimé quelque chose d'important de votre écran d'accueil et vous essayez de le récupérer ? Vous pouvez remettre les icônes d’applications à l’écran de différentes manières. Nous avons discuté de toutes les méthodes que vous pouvez suivre et remettre l'icône de l'application sur l'écran d'accueil. Comment annuler la suppression de l'écran d'accueil sur iPhone Comme nous l'avons mentionné précédemment, il existe plusieurs façons de restaurer cette modification sur iPhone. Méthode 1 – Remplacer l'icône de l'application dans la bibliothèque d'applications Vous pouvez placer une icône d'application sur votre écran d'accueil directement à partir de la bibliothèque d'applications. Étape 1 – Faites glisser votre doigt sur le côté pour trouver toutes les applications de la bibliothèque d'applications. Étape 2 – Recherchez l'icône de l'application que vous avez supprimée précédemment. Étape 3 – Faites simplement glisser l'icône de l'application de la bibliothèque principale vers le bon emplacement sur l'écran d'accueil. Voici le schéma d'application

Le rôle et l'application pratique des symboles fléchés en PHP Le rôle et l'application pratique des symboles fléchés en PHP Mar 22, 2024 am 11:30 AM

Le rôle et l'application pratique des symboles fléchés en PHP En PHP, le symbole fléché (->) est généralement utilisé pour accéder aux propriétés et méthodes des objets. Les objets sont l'un des concepts de base de la programmation orientée objet (POO) en PHP. Dans le développement actuel, les symboles fléchés jouent un rôle important dans le fonctionnement des objets. Cet article présentera le rôle et l'application pratique des symboles fléchés et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre. 1. Le rôle du symbole flèche pour accéder aux propriétés d'un objet. Le symbole flèche peut être utilisé pour accéder aux propriétés d'un objet. Quand on instancie une paire

Du débutant au compétent : explorez différents scénarios d'application de la commande Linux tee Du débutant au compétent : explorez différents scénarios d'application de la commande Linux tee Mar 20, 2024 am 10:00 AM

La commande Linuxtee est un outil de ligne de commande très utile qui peut écrire la sortie dans un fichier ou envoyer la sortie à une autre commande sans affecter la sortie existante. Dans cet article, nous explorerons en profondeur les différents scénarios d'application de la commande Linuxtee, du débutant au compétent. 1. Utilisation de base Tout d'abord, jetons un coup d'œil à l'utilisation de base de la commande tee. La syntaxe de la commande tee est la suivante : tee[OPTION]...[FILE]...Cette commande lira les données de l'entrée standard et enregistrera les données dans

Découvrez les avantages et les scénarios d'application du langage Go Découvrez les avantages et les scénarios d'application du langage Go Mar 27, 2024 pm 03:48 PM

Le langage Go est un langage de programmation open source développé par Google et lancé pour la première fois en 2007. Il est conçu pour être un langage simple, facile à apprendre, efficace et hautement simultané, et est favorisé par de plus en plus de développeurs. Cet article explorera les avantages du langage Go, présentera quelques scénarios d'application adaptés au langage Go et donnera des exemples de code spécifiques. Avantages : Forte concurrence : le langage Go prend en charge de manière intégrée les threads-goroutine légers, qui peuvent facilement implémenter une programmation simultanée. Goroutin peut être démarré en utilisant le mot-clé go

La large application de Linux dans le domaine du cloud computing La large application de Linux dans le domaine du cloud computing Mar 20, 2024 pm 04:51 PM

La large application de Linux dans le domaine du cloud computing Avec le développement et la vulgarisation continus de la technologie du cloud computing, Linux, en tant que système d'exploitation open source, joue un rôle important dans le domaine du cloud computing. En raison de leur stabilité, de leur sécurité et de leur flexibilité, les systèmes Linux sont largement utilisés dans diverses plates-formes et services de cloud computing, fournissant une base solide pour le développement de la technologie du cloud computing. Cet article présentera le large éventail d'applications de Linux dans le domaine du cloud computing et donnera des exemples de code spécifiques. 1. Technologie de virtualisation d'applications de Linux dans la plate-forme de cloud computing Technologie de virtualisation

Comprendre les horodatages MySQL : fonctions, fonctionnalités et scénarios d'application Comprendre les horodatages MySQL : fonctions, fonctionnalités et scénarios d'application Mar 15, 2024 pm 04:36 PM

L'horodatage MySQL est un type de données très important, qui peut stocker la date, l'heure ou la date plus l'heure. Dans le processus de développement actuel, l'utilisation rationnelle des horodatages peut améliorer l'efficacité des opérations de base de données et faciliter les requêtes et les calculs liés au temps. Cet article abordera les fonctions, les fonctionnalités et les scénarios d'application des horodatages MySQL, et les expliquera avec des exemples de code spécifiques. 1. Fonctions et caractéristiques des horodatages MySQL Il existe deux types d'horodatages dans MySQL, l'un est TIMESTAMP

Tutoriel Apple sur la façon de fermer les applications en cours d'exécution Tutoriel Apple sur la façon de fermer les applications en cours d'exécution Mar 22, 2024 pm 10:00 PM

1. Nous cliquons d’abord sur le petit point blanc. 2. Cliquez sur l'appareil. 3. Cliquez sur Plus. 4. Cliquez sur Sélecteur d'applications. 5. Fermez l'arrière-plan de l'application.

Comprendre le mécanisme et l'application de la gestion de la pile Golang Comprendre le mécanisme et l'application de la gestion de la pile Golang Mar 13, 2024 am 11:21 AM

Golang est un langage de programmation open source développé par Google qui possède de nombreuses fonctionnalités uniques en matière de programmation simultanée et de gestion de la mémoire. Parmi eux, le mécanisme de gestion de pile de Golang est une fonctionnalité importante. Cet article se concentrera sur le mécanisme et l'application de la gestion de pile de Golang et donnera des exemples de code spécifiques. 1. Gestion de la pile dans Golang Dans Golang, chaque goroutine possède sa propre pile. La pile est utilisée pour stocker des informations telles que les paramètres, les variables locales et les adresses de retour de fonction des appels de fonction.

See all articles