da2k / curso-reactjs-ninja

916 stars 323 forks source link

M2#A20 - TDD reverse #122

Closed alexandre1202 closed 6 years ago

alexandre1202 commented 6 years ago

Olá Fernando

Please, help!

No painel ESLint do Atom estou recebendo a mensagem indicada abaixo: Parsing error: The keyword 'export' is reserved (Fatal)

O comando import da primeira terceira linha do código abaixo "import { expect } from 'chai' do código abaixo apresenta a mensagem indicada quando coloco o código do ponteiro do mouse over :

'use strict'

import { expect } from 'chai' import reverse from './reverse'

it('reverse should be a function', () => { expect('reverse').to.be.a('function') })

O meu .eslintrc contém : { "extensions": "rallycoding" }

E o watch apresenta: FAIL ./reverse.test.js ● reverse should be a function

AssertionError: expected 'reverse' to be a function

  5 | 
  6 | it('reverse should be a function', () => {
> 7 |   expect('reverse').to.be.a('function')
  8 | })
  9 | 

  at Object.<anonymous> (reverse.test.js:7:27)

Agradeço muito se você tiver uma dica sobre alguma pista do que pode ser para eu poder continuar reproduzindo todos os passos que você vem apresentando

@fdaciuk

fdaciuk commented 6 years ago

Fala @Alexandre1202! Sobre a mensagem do Linter, tem que ver se esse linter que você está usando suporta ES6+. Não está usando o standard, certo?

Já sobre o erro no teste, vc está passando uma string 'reverse' no expect.

Ali você precisa passar a função reverse que você está importando :)

alexandre1202 commented 6 years ago

Corrigi o codigo conforme abaixo e agora está ok: expect(reverse).to.be.a('function')

Quanto ao eslint para ver a versão eu teria que identificar o package.json? { "scripts": { "test": "jest --coverage", "test:watch": "npm test -- --watch" }, "devDependencies": { "babel-core": "^6.26.0", "babel-jest": "^22.4.3", "babel-preset-es2015": "^6.24.1", "babel-preset-stage-0": "^6.24.1", "chai": "^4.1.2", "eslint-config-rallycoding": "^3.2.0", "jest-cli": "^22.4.3" } } Não vi no package.json acima eu não encontrei nada do eslint para o ES6+. Por favor, esse é o caminho? Outra dúvida. Para trabalhar com ES6+ eu identificar essa linha?: babel-preset-stage-0"

E por favor, nesse reverse.teste.js que listei acima o expect tem como pré-requisito o ES6+?

fdaciuk commented 6 years ago

A configuração de lint que você está usando é relacionado a essa dependência: eslint-config-rallycoding. De onde você instalou ela? É lá que você vai encontrar as regras que essa configuração contém :)

Em todos os códigos do curso nós estamos usando ES6+. O import e export, por exemplo, fazem parte da especificação de módulos do ES6 :)

Só como observação: quando eu digo ES6+, quero dizer, ES6, ES7, ES8, etc., porque a cada ano uma nova versão do EcmaScript é lançado, de forma sequencial. O ES6 foi lançado em 2015, o ES7 em 2016, e assim por diante :)

alexandre1202 commented 6 years ago

Eu instalei ela conforme você explicou:

Obrigado

fdaciuk commented 6 years ago

Ah sim, a minha dúvida foi onde você achou essa config rallycoding :) Provavelmente no lugar onde vc encontrou essa dependência é que vai te dizer as regras que ela tem :)

Mas legal que funcionou! Provavelmente faltava alguma atualização dessa configuração que, ao reinstalar a dependência, ele pegou :)

Qualquer dúvida avisa ae :)