Unit Test em Stored Procedures (SQL Server) Parte II
Tags: sql
Published: 2020-06-09 18:22:44

E ai pessoal, como estamos? 
Dando continuidade a nossa sequencia de posts sobre Testes Unitários em Stored Procedures, dessa vez vamos ver como avaliar se o valor retornado da nossa sp está de acordo com o valor esperado. 

Vamos continuar usando nesse post: 
1. Visual Studio Data Tools 2017
2. SQL Server 2016

Ainda utilizaremos a sp criada no post anterior, então se você perdeu a **Parte 1** pode dar uma conferida aqui nesse [LINK](https://dev.to/sousallan/unit-test-em-stored-procedures-sql-server-parte-i-3jkf), beleza? 

Bom, essa parte é bem mais curta que a primeira visto que já fizemos todas as configurações básicas como: 
* Criar a sp;
* Importar a sp para o nosso projeto;
* Configurar a conexão com a base de dados;
* Realizar o primeiro teste unitário

Então vamos lá..
Para atingir o nosso objetivo que é verificar se o valor retornado da sp está correto, vamos criar uma nova unidade de teste. Então podemos clicar com o botão direito em cima da nossa sp e em "Create Unit Tests..."

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/8mdonvju4dj7i2hsbopo.PNG)

Será exibida a tela acima, podemos configurar da seguinte forma: 
**Em project:** Vamos deixar o nome do projeto que já havíamos criado. 
**Create New Class:** vamos criar uma classe nova com o nome de UnitTestOperacao.cs (esse nome fica por sua conta).
E em seguida podemos finalizar com o OK. 

Podemos observar agora em nosso Explorador de Soluções (Solutions Explorer) que uma nova unidade de teste foi criada: 
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/pagpvmuedeyooop9n7d7.PNG)

Vamos ajustar agora o script de test que é gerado. 
Certifique-se que está alterando o script correto, observando o nome do arquivo que está aberto. 
Feito isso, faça as alterações devidas no script para que fique da forma como está abaixo: 
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/wdsww2c99uxbdugu4fae.PNG)

De acordo com os inputs alterados queremos que seja realizado uma **SOMA** entre 2 + 2 e que o resultado seja 4. 

Agora vamos alterar nossas condições de teste. 
Na parte inferior remova o teste inconclusivo. E adicione a condição **SCALAR VALUE**, após adicionar essa condição aperte F4 para acessar as propriedades e em **EXPECTED VALUE** vamos colocar o valor 4. Com isso, o nosso teste espera que a SOMA entre 2+2 seja 4. 

Adicionando a condição **SCALAR VALUE**
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/6rptx4c9adfxvo7aqev6.PNG)

Ajustando a propriedade **EXPECTED VALUE**
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/4pbrwkgbd1bjm30rgf0l.PNG)

Ao concluir as alterações, salve a solução e observe na janela "Gerenciador de Testes" que a nossa nova unidade está disponível. 
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/2xmvq9hpwwq1ik1tkffv.PNG)

Finalmente podemos colocar o nosso teste pra rodar. 

Clique com o botão direito em cima da unidade criada e em "Executar Testes Selecionados"

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/wkk43dwot303gpdtotwr.PNG)

Voilà! Nosso teste executado com sucesso... afinal de contas 2+2 ainda é 4. 

Agora vamos mudar o valor de qualquer input para que o valor da soma seja diferente de 4. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/vjc182rt18y809t3dtcw.PNG)

Alterando o script como acima o resultado da soma será 3, o que é diferente de 4. Então nosso teste deverá apresentar erro. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/l9mmed7i23i0y6ub08gh.PNG)

E como esperado o teste retornou um erro, alertando que os valores são diferentes, o resultado 3 não coincide com o valor 4 esperado. 

E assim concluímos a segunda parte do nosso post de Unit Test em Stored Procedures. 
Sugiro, que vocês brinquem com os valores e operações para visualizar o comportamento do teste. 

Até a próxima, onde falaremos sobre testes negativos e encerraremos essa sequência de posts.