Os testes de integração front-end devem fazer solicitações HTTP?

5

Estou desenvolvendo um aplicativo da Web de página única usando o AngularJS. Os dados para este aplicativo são consumidos em uma API REST que é bem testada por si só.

A aplicação Angular tem um monte de testes unitários que testam, e. controladores individuais e seus métodos. Ele também possui vários testes de integração que atualmente verificam se esses controladores se comportam corretamente quando aplicados a uma exibição.

A unidade e os testes de integração estão atualmente compartilhando um conjunto de dados JSON stub que são retornados quando certas solicitações HTTP estão prestes a ser feitas (por meio do $httpBackend Serviço Angular). Nenhuma solicitação HTTP real é enviada ao servidor da API durante o teste.

Esta é uma boa abordagem para testes de integração front-end? Do meu ponto de vista, os testes unitários estão testando pequenas unidades de código (como métodos individuais em controladores) e os testes de integração são Testando a maneira como essas unidades se comportam no contexto mais amplo de uma visão ou modelo. A configuração permite que o aplicativo front-end seja testado de forma totalmente independente.

No entanto, os desenvolvedores do Transferidor (a estrutura de teste de integração que estou usando) afirmaram em várias ocasiões que acreditam que a integração os testes devem fazer solicitações HTTP para um servidor real (consulte este problema do GitHub ):

Protractor is intended for end to end tests, so the primary use case is when you have an actual backend hooked up.

Supondo que a resposta à pergunta acima seja "sim" (ou "talvez"), deve haver um terceiro conjunto de testes que realmente teste a comunicação entre o aplicativo front-end e a API REST?

    
por James Allardice 18.02.2014 / 10:59
fonte

1 resposta

3

É útil ter testes funcionais automatizados que testam o front-end enquanto zombam do servidor, mas não são testes de integração . Eles ainda testam um componente isoladamente, nada é integrado. São testes funcionais do componente.

Para se qualificar como teste integração , o teste deve testar todos os componentes da solução final integrar , que funcionam juntos. Para isso, precisa da configuração completa . Com o servidor real e banco de dados real carregado com dados de amostra realistas e sem brincadeiras em tudo. Você quer ter esse teste.

Os testes de integração (da configuração completa) são os mais importantes. Eles testam todo o código que estará envolvido e você deve fazer isso antes de colocar qualquer confiança no aplicativo. Quais outros testes que você quer é uma questão de equilibrar o esforço para criá-los com o benefício que eles trazem. O principal benefício dos testes de componentes individuais é que eles permitem depuração mais fácil do que os testes de integração, portanto, escreva os testes que ajudam na depuração. O que eles são depende da complexidade de configurar os vários componentes e, portanto, são específicos do projeto.

    
por 18.02.2014 / 11:17
fonte