Ho alcuni test di integrazione sui proc memorizzati. In genere eseguo l'installazione di test utilizzando Dapper. Questo va bene per i casi semplici, ma in alcuni casi per configurare correttamente il sistema sarebbe molto più semplice chiamare i proc memorizzati necessari. Sarebbe più semplice perché alcune entità hanno molte relazioni e vincoli e replicare che in Dapper richiede molto tempo, in più se cambio il sistema devo modificare anche il mio codice di configurazione del test Dapper.
È una buona idea usare il sistema per configurare il sistema per testare o devo mantenere la configurazione del sistema indipendente dal sistema?
Ho aggiunto un semplice esempio di codice, di seguito, (non rappresentativo del mio sistema attuale) per aiutare a chiarire cosa intendo. Nel primo test sto verificando che CreatePerson aggiunga effettivamente un'entità nella tabella Persona. Nel secondo test utilizzo il metodo appena testato, CreatePerson, per configurare il sistema e quindi provare qualcos'altro.
public class When_CreatePerson_is_called
{
[Fact]
public void It_should_create_entity()
{
// arrange
var db = new Database();
// act - testing CreatePerson does what is expected of it
int id = db.CreatePerson();
Person p = db.GetPerson(id);
Assert.NotNull(p);
}
}
public class When_UpdatePerson_is_called
{
[Fact]
public void It_should_update_untity()
{
// arrange
var db = new Database();
int id = db.CreatePerson(); // Should I use a different way to initialize the system or is it ok to use the system?
// act
db.UpdatePerson(id, "John Smith");
Person p = db.GetPerson(id);
Assert.Equal("John Smith", p.FullName);
}
}