Diferència entre revisions de la pàgina «Javascript Quality Control with Jest and ESLint»

De wikijoan
Salta a la navegació Salta a la cerca
Línia 1: Línia 1:
 +
__TOC__
 
=Introducció=
 
=Introducció=
 
Referència que seguim, article: Javascript Quality Control with Jest and ESLint
 
Referència que seguim, article: Javascript Quality Control with Jest and ESLint
Línia 106: Línia 107:
 
Time:        1.82 s
 
Time:        1.82 s
 
Ran all test suites.
 
Ran all test suites.
 +
</pre>
 +
==Linting amb ESLint==
 +
Lint serveix per:
 +
*Improved readability
 +
*Finding syntax errors before execution
 +
*Disallow unused and undeclared variables
 +
*Solves the tab vs. spaces debate
 +
<pre
 +
$ npm install eslint --save-dev
 +
 +
$ joe .eslintrc
 +
// .eslintrc
 +
{
 +
  "env": {
 +
    "browser": true,
 +
    "es6": true,
 +
    "jest": true,
 +
    "node": true
 +
  },
 +
  "extends": [
 +
    "eslint:recommended"
 +
  ]
 +
}
 +
 +
$ joe .eslintignore
 +
node_modules
 +
coverage
 +
</pre>
 +
Afegirm el '''lint''' en el nostre ''package.json'':
 +
<pre>
 +
{
 +
  "scripts": {
 +
    "lint": "eslint .",
 +
    "test": "jest --coverage",
 +
    "test:watch": "jest --watch"
 +
  }
 +
}
 
</pre>
 
</pre>
  

Revisió del 14:13, 7 maig 2021

Introducció

Referència que seguim, article: Javascript Quality Control with Jest and ESLint

Getting Started

Instal·lem jest:

$ npm install --save-dev jest

El primer de tot és crear el projecte:

$ mkdir prova_test
$ cd prova_test
$ npm init

script sum.js:

function sum(a, b) {
  return a + b;
}
module.exports = sum;

script sum.test.js: (només pel fet de tenir extensió test.js, o bé estar dins de la carpeta __test__, ja participarà en el test):

const sum = require('./sum');

test('adds 1 + 2 to equal 3', () => {
  expect(sum(1, 2)).toBe(3);
});

El fitxer package.json s'ha creat en el npm init. La part de test posarem:

  "scripts": {
    "test": "jest"
  }

i ara ja podem provar el test:

$ npm run test

> prova_test@1.0.0 test
> jest

 PASS  ./sum.test.js
  ✓ adds 1 + 2 to equal 3 (4 ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        1.485 s
Ran all test suites.

També podem crear la carpeta __tests__, i allà ficar els scripts .js que volem avaluar. Per exemple, __tests__/suma.js:

const sum = require('../sum');

test('adds 5 + 7 to equal 12', () => {
  expect(sum(5, 7)).toBe(12);
});

i ara s'executen els dos tests.

o bé més senzill:

$ npm test

> prova_test@1.0.0 test
> jest

 PASS  ./sum.test.js
 PASS  __tests__/suma.js

Test Suites: 2 passed, 2 total
Tests:       2 passed, 2 total
Snapshots:   0 total
Time:        3.155 s
Ran all test suites

Amb l'opció --coverage la informació és una mica diferent:

  "scripts": {
   "test": "jest --coverage",
  }
$ npm run test

> prova_test@1.0.0 test
> jest --coverage

 PASS  __tests__/suma.js
 PASS  ./sum.test.js
----------|---------|----------|---------|---------|-------------------
File      | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
----------|---------|----------|---------|---------|-------------------
All files |     100 |      100 |     100 |     100 |                   
 sum.js   |     100 |      100 |     100 |     100 |                   
----------|---------|----------|---------|---------|-------------------

Test Suites: 2 passed, 2 total
Tests:       2 passed, 2 total
Snapshots:   0 total
Time:        1.82 s
Ran all test suites.

Linting amb ESLint

Lint serveix per:

  • Improved readability
  • Finding syntax errors before execution
  • Disallow unused and undeclared variables
  • Solves the tab vs. spaces debate
Afegirm el '''lint''' en el nostre ''package.json'':
<pre>
{
  "scripts": {
    "lint": "eslint .",
    "test": "jest --coverage",
    "test:watch": "jest --watch"
  }
}

Cas d'us: https://github.com/trekhleb/javascript-algorithms/

Aquest repositori conté una col·lecció gran d'estructures de dades i algorismes per a Javascript. Cada algorisme conté la seva implementació, documentació i un test per comprovar que el codi és vàlid.

Clonem el repositori
$ git clone https://github.com/trekhleb/javascript-algorithms.git

How to use this repository
Install all dependencies

$ npm install

Run ESLint: You may want to run it to check code quality.

$ npm run lint

Run all tests

$ npm test

Run tests by name

$ npm test -- 'LinkedList'

Troubleshooting: In case if linting or testing is failing try to delete the node_modules folder and re-install npm packages:

$ rm -rf ./node_modules
$ npm i

Playground

You may play with data-structures and algorithms in ./src/playground/playground.js file and write tests for it in ./src/playground/__test__/playground.test.js.

Then just simply run the following command to test if your playground code works as expected:

$ npm test -- 'playground'

creat per Joan Quintana Compte, maig 2021