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 79: Línia 79:
 
Time:        3.155 s
 
Time:        3.155 s
 
Ran all test suites
 
Ran all test suites
 +
</pre>
 +
Amb l'opció ''--coverage'' la informació és una mica diferent:
 +
<pre>
 +
  "scripts": {
 +
  "test": "jest --coverage",
 +
  }
 +
</pre>
 +
<pre>
 +
$ 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.
 
</pre>
 
</pre>
  

Revisió del 14:04, 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.

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