You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/content/4/pt/part4a.md
+15-15Lines changed: 15 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -66,9 +66,9 @@ app.listen(config.PORT, () => {
66
66
})
67
67
```
68
68
69
-
O arquivo <i>index.js</i> somente importa a aplicação do arquivo <i>app.js</i> e depois iniciar a aplicação. A função _info_ do módulo logger é usada para imprimir no console, informando que a aplicação está sendo executada.
69
+
O arquivo <i>index.js</i> somente importa a aplicação do arquivo <i>app.js</i> e depois inicia a aplicação. A função _info_ do módulo logger é usada para imprimir no console, informando que a aplicação está sendo executada.
70
70
71
-
Agora, o app Express e o código encarregado de cuidar do servidor web estão separados, seguindo assim [as melhores](https://dev.to/nermineslimane/always-separate-app-and-server-files--1nc7)[práticas](https://nodejsbestpractices.com/sections/projectstructre/separateexpress). Uma das vantages desse método é que a aplicação poderá agora ser testada a nível de chamadas de API HTTP, sem realizar chamadas via HTTP sobre a rede, o que resultará em execuções de testes mais rápidas.
71
+
Agora, o app Express e o código encarregado de cuidar do servidor web estão separados, seguindo assim [as melhores](https://dev.to/nermineslimane/always-separate-app-and-server-files--1nc7)[práticas](https://nodejsbestpractices.com/sections/projectstructre/separateexpress). Uma das vantagens desse método é que a aplicação poderá agora ser testada a nível de chamadas de API HTTP, sem realizar chamadas via HTTP sobre a rede, o que resultará em execuções de testes mais rápidas.
72
72
73
73
O gerenciamento de variáveis de ambiente é extraído em um arquivo separado <i>utils/config.js</i>:
Esse _router_ que definimos mais cedo é usado <i>se</i> a URL da requisição começar com <i>/api/notes</i>. Por este motivo, o objeto notesRouter somente deve definir rotas com caminhos relativos, por exemplo o caminho vazio <i>/</i> ou apenas o parâmetro <i>/:id</i>.
202
202
203
-
Após estas mudanças, nosso arquivo <i>app.js</i> ficará está desta forma:
203
+
Após estas mudanças, nosso arquivo <i>app.js</i> ficará desta forma:
O código coloca diferente middleware em uso, um deles é o <i>notesRouter</i> que está acoplado à rota <i>/api/notes</i>.
240
+
O código coloca diferentes middleware em uso, um deles é o <i>notesRouter</i> que está acoplado à rota <i>/api/notes</i>.
241
241
242
242
Nosso middleware personalizado foi movido para o novo módulo <i>utils/middleware.js</i>:
243
243
@@ -300,7 +300,7 @@ noteSchema.set('toJSON', {
300
300
module.exports=mongoose.model('Note', noteSchema)
301
301
```
302
302
303
-
Para recapitular, após estas mudanças a estrutura de diretórios está desta forma:
303
+
Para recapitular, após estas mudanças a estrutura de diretórios estará desta forma:
304
304
305
305
```bash
306
306
├── index.js
@@ -321,7 +321,7 @@ Para recapitular, após estas mudanças a estrutura de diretórios está desta f
321
321
322
322
Para aplicações pequenas, a estrutura de diretórios não é muito relevante. Mas uma vez que a aplicação começa a crescer, você precisará estabelecer algum tipo de estrutura e separar diferentes responsabilidades da aplicação em módulos distintos. Isso facilitará muito o desenvolvimento da aplicação.
323
323
324
-
As aplicações Expresse não requerem uma estrutura de diretórios pré-determinada ou convenção de nomes para arquivos. Em contrapartida, Ruby on Rails de fato requer uma estrutura específica. Nossa estrutura atual simplesmente segue algumas das melhores práticas que você poderá encontrar na internet.
324
+
As aplicações Express não requerem uma estrutura de diretórios pré-determinada ou convenção de nomes para arquivos. Em contrapartida, Ruby on Rails de fato requer uma estrutura específica. Nossa estrutura atual simplesmente segue algumas das melhores práticas que você poderá encontrar na internet.
325
325
326
326
Você pode encontrar o código atual da nossa aplicação na branch <i>part4-1</i> [neste repositório GitHub](https://github.com/fullstack-hy2020/part3-notes-backend/tree/part4-1).
327
327
@@ -366,7 +366,7 @@ info('message')
366
366
error('error message')
367
367
```
368
368
369
-
A segunda maneira pode ser mais indicada se somente uma pequena parte das funções exportadas forem utilizadas no código.
369
+
A segunda maneira pode ser mais indicada caso somente uma pequena parte das funções exportadas forem utilizadas no código.
370
370
371
371
No arquivo <i>controller/notes.js</i> a exportação funciona assim:
372
372
@@ -469,7 +469,7 @@ Uma boa prática é realizar _commits_ do seu código periodicamente, sempre que
469
469
470
470
Nós negligenciamos completamente uma área essencial no desenvolvimento de software chamada de testes.
471
471
472
-
Vamos iniciar nossa jornada nos testes dando uma olhada nos testes unitários (_unit tests_). A lógica de nossa aplicação é tão simples, que não faz muito sentido os testes unitários. Vamos criar um um novo arquivo <i>utils/for_testing.js</i> e escrever algumas funções simples para praticarmos escrita de teste:
472
+
Vamos iniciar nossa jornada nos testes dando uma olhada nos testes unitários (_unit tests_). A lógica de nossa aplicação é tão simples, que não faz muito sentido os testes unitários. Vamos criar um novo arquivo <i>utils/for_testing.js</i> e escrever algumas funções simples para praticarmos a escrita de testes:
473
473
474
474
```js
475
475
constreverse= (string) => {
@@ -526,7 +526,7 @@ Vamos definir um script para os testes com o comando <i>npm script _test_</i> qu
526
526
}
527
527
```
528
528
529
-
O Jest requer que seja especificado que o ambiente de execução é o Node. Isso pode ser feito adicionando as seguintes linhas ao final do arquivo <i>package.json</i>:
529
+
O Jest requer a especificação de que o ambiente de execução é o Node. Isso pode ser feito adicionando as seguintes linhas ao final do arquivo <i>package.json</i>:
530
530
531
531
```js
532
532
{
@@ -633,7 +633,7 @@ describe('average', () => {
633
633
})
634
634
```
635
635
636
-
O teste revela que a função não funciona corretamente com um array vazio (isso se deve ao fato de a divisão por zero no JavaScript resultar em <i>NaN</i>):
636
+
O teste revela que a função não funciona corretamente com um array vazio (isso se deve ao fato da divisão por zero no JavaScript resultar em <i>NaN</i>):
637
637
638
638

639
639
@@ -667,7 +667,7 @@ Os blocos de descrição (describe blocks) são utilizados para agrupar testes e
667
667
668
668
Como veremos mais tarde, os blocos <i>describe</i> são necessários quando queremos executar alguma configuração compartilhada ou operações de encerramento (teardown) para um grupo de testes.
669
669
670
-
Outra coisa a observar é que escrevemos testes de maneira compacta, sem atribuir a saída da função testada a uma variável:
670
+
Outra coisa a se observar é que escrevemos testes de maneira compacta, sem atribuir a saída da função testada a uma variável:
Defina uma nova função _totalLikes_ que recebe uma lista de posts de blog como parâmetro. A função retorna o total da soma de <i>likes</i> em todos os posts.
716
716
717
-
Escreva os testes apropriados para a função. É recomendado colocar os testes dentro de blocos <i>describe</i> block so that the test report output gets grouped nicely:
717
+
Escreva os testes apropriados para a função. É recomendado colocar os testes dentro de um bloco <i>describe</i> para que a saída do relatório de testes seja agrupada de forma eficiente:
718
718
719
719

Se definir seus próprios inputs para testes for muito trabalho, você pode usar uma lista pronta [aqui](https://raw.githubusercontent.com/fullstack-hy2020/misc/master/blogs_for_test.md).
743
+
Se definir seus próprios inputs para testes for muito trabalhoso, você pode usar uma lista pronta [aqui](https://raw.githubusercontent.com/fullstack-hy2020/misc/master/blogs_for_test.md).
744
744
745
745
Você vai enfrentar problemas ao escrever testes. Lembre-se das coisas que aprendemos sobre [depuração](/ptbr/part3/salvando_dados_no_mongo_db#depurando-aplicacoes-node) na parte 3. Você pode imprimir coisas no console com _console.log_ mesmo durante a execução de testes. É possível até mesmo utilizar o depurador (debugger) enquanto estiver rodando os testes, veja como fazer isso [aqui](https://jestjs.io/docs/en/troubleshooting).
746
746
@@ -774,7 +774,7 @@ Escreva os testes para este exercício dentro de um novo bloco <i>describe</i>.
774
774
775
775
Esse e o próximo exercício são um pouco mais desafiadores. Terminar esses dois exercício não é um requisito para avançar pelo material do curso, então pode ser uma boa ideia retornar a estes exercícios quando você passar pelo material desta parte completamente.
776
776
777
-
A conclusão deste exercício pode se dá sem o uso de bibliotecas adicionais. No entanto, esse exercício é uma grande oportunidade para aprender a utilizar a biblioteca [Lodash](https://lodash.com/).
777
+
A conclusão deste exercício pode se dá sem o uso de bibliotecas adicionais. No entanto, esse exercício é uma grande oportunidade para aprender a utilizar a biblioteca [Lodash](https://lodash.com/).
778
778
779
779
Crie uma função chamada _mostBlogs_ que recebe um array de blogs como parâmetro. A função retorna o <i>author</i> (autor) com o maior número de blogs. O retorno também deverá conter a quantidade de blogs que este autor possui:
780
780
@@ -789,7 +789,7 @@ Se houver empate, é suficiente retornar apenas um dos autores.
789
789
790
790
#### 4.7*: funções auxiliares e testes unitários, passo 5
791
791
792
-
Crie uma função _mostLikes_ que recebe um array de blogs como parâmetro. A função retorna o autor cujos posts têm a maior quantidade de likes. O valor retornado também deve conter o número total de likes que autor recebeu:
792
+
Crie uma função _mostLikes_ que recebe um array de blogs como parâmetro. A função retorna o autor cujos posts têm a maior quantidade de likes. O valor retornado também deve conter o número total de likes que o autor recebeu:
0 commit comments