Testes do Node.JS com Jasmine, bancos de dados e código pré-existente

5

Eu criei recentemente o início de um sistema central que provavelmente se transformará em um produto monstro. Estou construindo o sistema com node.js, e decidi que depois de construir uma pequena base, seria uma ótima ideia começar a usar algum tipo de suíte de testes automatizada para testar o aplicativo.

Eu decidi usar o jasmine, pois ele parece bastante sólido e tem muitos recursos para métodos e classes de stubbing e espionagem. O aplicativo tem muitos armazenamentos de dados externos e acesso à API (kestrel, mysql, mongodb, facebook e mais).

Meu problema é, eu tenho uma boa quantidade de código escrito que eu quero começar a testar - pois representa os fundamentos da aplicação. Quais são as melhores práticas para testar métodos / classes que acessam APIs externas que podem ou não ter controle?

Como exemplo, tenho uma estrutura de dados que busca um monte de dados de um banco de dados MySQL. Eu quero testar o método que recupera os dados; e não tenho certeza de como fazer isso. Eu poderia testar o método fetch que deveria retornar uma matriz de objetos, mas para isolar o método do banco de dados, eu preciso definir meus próprios dados de fixture. Então, o que eu acabo fazendo é stubbing a execução do mysql e retornar um dataset estático. Então, acabo escrevendo uma função que retorna o conjunto de dados que faz meu teste passar. Isso não parece realmente testar o código, além de verificar se um método está sendo chamado.

Eu sei que isso é meio abstrato e vago, parece que a idéia de testar é muito abstrata, então espero que alguém tenha alguma experiência e possa me guiar na direção certa.

Qualquer conselho ou leitura que eu possa fazer é mais do que bem-vindo.

Obrigado antecipadamente.

    
por Jim Rubenstein 03.02.2012 / 02:07
fonte

1 resposta

1

Eu definitivamente não sou um especialista em testes, mas acho que você está no caminho certo, o que você precisa são mais testes: você deve fazer um teste para cada tipo de coisa que o banco de dados pode retornar (eventualmente; você não precisa aparecer com todos eles imediatamente). Zombar de um tipo diferente de valor de retorno que você poderia esperar do banco de dados (retornou uma linha de resultado, retornou vários, nenhum resultado, por exemplo) para cada teste e certifique-se de que seu método retorna os valores corretos.

Dessa forma, sua primeira implementação pode retornar apenas os resultados esperados do seu teste, mas à medida que você adiciona mais testes, você continua revisando a implementação até que ela seja concluída, conforme necessário.

    
por 03.02.2012 / 04:15
fonte