A idéia é implementar códigos pensando no comportamento do Javascript com base no JS Expect - Módulo 03
, que trata de Conceitos fundamentais sobre o ciclo de vida do Javascript
.
Baseando-se nos testes automatizados já criados neste repo - similares aos feitos no Desafio Anterior -, implemente o código em cada uma das services existentes.
- Implemente os métodos marcados com um
//@TODO: comment
em cada uma das respectivas services, na ordem que preferir:
- services/StatementsService
- services/WeirdMathService
- services/ReferencesService
- services/ObjectMethodsService
Nota: Para saber quais os comportamentos esperados de cada método, verifique os testes unitários de cada service.
- Remova os
//@TODO: comments
de cada função implementada, e garanta que os testes referentes à essa função estejam funcionando.
Nota: Não são necessárias alterações nos testes. Eles já estão prontos e servem de guia durante a execução do desafio
Você saberá que o desafio está concluído quando executar o comando npm run test
e todos os testes passarem. O resultado deve ser algo parecido com isso:
- Desafio opcional: Note que no arquivo
test/unit/service/ReferencesService.test
, existe um teste na linha 44 com umit.skip()
. Esse é um desafio opcional, e caso queira implementá-lo é só remover o.skip
e implementar a respectiva função que está sendo testada na ReferencesService
Sinta-se livre pra desenvolver sua solução da melhor maneira possível, e caso já queira uma dica sobre como organizar as idéias, aqui vai:
- Lembre que cada
@TODO: comment
tem uma dica sobre como resolver o problema - Fique atento ao comportamento esperado do método nos testes
- Não esqueça de conferir as aulas do curso denovo para fixar mais ainda os conhecimentos
- Caso queira executar apenas 1 teste por vez para manter o terminal sempre limpo e fácil de trabalhar, você pode ir no teste ou na suite de testes que deseja focar e usar um
.only
. (ex.:describe.only(...
,it.only(...
)
project
│ README.md
│ package.json
│
└───src
│ │
│ └───service
│ │ ObjectMethodsService.js // EDIT HERE !
│ │ ReferencesService.js // EDIT HERE !
│ │ StatementsService.js // EDIT HERE !
│ │ WeirdMathService.js // EDIT HERE !
│
└───test
│ │
│ └───unit/service
│ │ ObjectMethodsService.js // DO *NOT* EDIT HERE !
│ │ ReferencesService.js // DO *NOT* EDIT HERE !
│ │ StatementsService.js // DO *NOT* EDIT HERE !
│ │ WeirdMathService.js // DO *NOT* EDIT HERE !
│
-
ObjectMethodsService
- Deve entender Coerção de tipos e Objects Lifecycle e implementar soluções usando
valueOf
,toString
e[Symbol.toPrimitive]
.
- Deve entender Coerção de tipos e Objects Lifecycle e implementar soluções usando
-
ReferencesService
- Deve entender tipos de referência e Mutability vs Immutability, e implementar soluções copiando ou não referências de objetos.
-
StatementsService
- Deve entender o uso de conditional statements no Javascript e seus respectivos retornos em diferentes cenários.
-
WeirdMathService
- Deve entender o fluxo de vida do Javascript e as coerções implícitas que ocorrem em expressões matemáticas.
-
Crie um fork deste repositório e modifique o README.md inserindo o seu nome no início do arquivo.
-
Instale as dependências usando
npm i
e garanta que os testes rodam normalmente comnpm run dev
Nota: Como a idéia é que você implemente os códigos a fim de fazer os testes passarem, a princípio todos os testes estarão quebrando, então não se assuste. :)
-
Implemente cada uma das funções marcadas com um
//@TODO: comment
(e não se esqueça de remover esses comentários uma vez que concluir a implementação) -
Garanta que todos os testes estejam rodando e, caso queira, conclua o desafio opcional mencionado acima.
-
Envie o link no canal
#desafios-jsexpert
da nossa comunidade no discord.
Se você está pegando esse desafio na estréia, corre lá e envia pra gente até Quarta-feira, 15 de dezembro de 2021 (15/12/2021)!