da2k / curso-reactjs-ninja

915 stars 322 forks source link

Problema com testes (console.assert) - M2#A04 #443

Closed ricardocaiuba closed 4 years ago

ricardocaiuba commented 4 years ago

Fala Fernando, tudo bem? Estou tendo um contratempo na aula M2#A04. Em um arquivo de nome sum.test.js Escrevi o seguinte código conforme seu exemplo:

"use strict";

it("Um é igual a um", () => {
  console.assert(1 === 2, "1 não é igual a dois");
});

quando eu rodo o test, ele não me mostra a tag "FAIL". Ele fica dessa maneira:

 PASS  ./sum.test.js
  √ Um é igual a um (11ms)

  console.assert sum.test.js:4
    AssertionError [ERR_ASSERTION]: 1 não é igual a dois

Deixei o código em https://github.com/ricardocaiuba/jest-in-practice

Desde já, muito obrigado.

@fdaciuk

fdaciuk commented 4 years ago

Oi @ricardocaiuba! Houveram algumas alterações no comportamento do console.assert em versões mais recentes do Node.js (você pode ver uma discussão sobre isso aqui). Da versão 10 pra frente, o console.assert não gera mais um erro.. ele simplesmente exibe no console uma mensagem dizendo que o teste não passou, por isso o Jest não exibe o "Fail".

Para continuar tendo o comportamento anterior, foi criada uma biblioteca chamada assert, que dispara um erro. Essa biblioteca serve especificamente para quem vai manter o uso do console.assert nos seus códigos. A implementação, no seu caso, seria algo bem simples.Só fazer a instalação do assert:

npm i --save-dev assert

E depois reatribuir a função do console.assert, passando essa função.

Usando o sistema de módulos padrão do Node (CommonJS):

'use strict'

console.assert = require('assert')

Ou, se sua aplicação já estiver configurada para usar ES Modules:

import assert from 'assert'
console.assert = assert

Com isso, esse exemplo vai funcionar como esperado. Mas eu recomendaria você não se preocupar com isso no momento, que nas próximas auas eu vou mostrar com usar a ferramenta de asserção do próprio Jest. O console.assert foi só um exemplo inicial :)

ricardocaiuba commented 4 years ago

Maravilha man. Muito obrigado. @fdaciuk