Como eu testaria a lógica do banco de dados?

12

Ainda estou tendo um problema para resolver um pequeno problema no que diz respeito ao TDD.

Eu preciso de um método que obtenha um determinado conjunto de registros de dados filtrados da camada de dados (linq2SQL). Observe que eu estou usando as classes geradas pelo linq que são geradas a partir do DBML. Agora, o problema é que eu quero escrever um teste para isso.

eu:

a) primeiro insira os registros no teste e depois execute o método e teste os resultados

b) use dados que possam estar no banco de dados. Não se interessar por essa lógica, pois isso pode fazer com que as coisas quebrem.

c) o que você sugere?

Neale
fonte

Respostas:

7

Variação em (a).

Tenha um banco de dados de teste ou subseção do banco de dados que possa ser usado para teste. Quando você estiver configurando seus testes, tenha uma rotina que inicialize o banco de dados conforme necessário para iniciar os testes (isso pode ser feito antes de cada teste, conforme apropriado). Isso pode incluir a exclusão de dados, a inserção de dados, etc. Em seguida, execute seus testes. Na fase de desmontagem, limpe depois de si mesmo. Pode ser repetido o quanto for necessário, sem risco de interromper o sistema ativo (não é uma boa ideia testar usando dados no banco de dados necessários para qualquer outra coisa).

Yaakov Ellis
fonte
1
Boa resposta. Eu gosto de criar bancos de dados descartáveis ​​usando o sqlite. Isso não é possível se você deseja testar itens específicos da implementação do banco de dados (como gatilhos, por exemplo), mas permite uma configuração / desmontagem rápida e inofensiva.
bogeymin
1
@bogeymin - você ainda pode configurar um DB teste com gatilhos, se quiser (você pode criar todo o db com um script durante FixtureSetup)
Yaakov Ellis