La cobertura de código en VS2012 no muestra el objeto de tipo dinámico utilizado para Dapper según lo cubierto

c# dapper integration-testing visual-studio-2012

Pregunta

Estamos utilizando VS2012 Ultimate (¡gracias BizSpark!) Y hemos empezado a realizar pruebas de integración para garantizar que nuestras consultas Dapper funcionen con la base de datos en el ciclo. Estoy tratando de garantizar una cobertura de código del 100% para todas las clases relacionadas con la base de datos.

En una de nuestras clases, el informe de cobertura de código de las pruebas para nuestra función AddDelay() muestra que las líneas que declaran e inicializan el objeto anónimo de datos no están cubiertas, sin embargo, debe ser para que el Execute funcione. Hay un objeto simulado que se transfiere y parece que todo funciona, pero no puedo entender por qué la cobertura del código no es 100% para ese método.

¿Alguna sugerencia de por qué el informe muestra que no está cubierto dado que es una función súper simple, y el objeto de data se pasa a la función de ejecución como un parámetro?

    public bool AddDelay(DelayInformationModel delay)
    {
        const string sql = @"INSERT INTO EquipmentDelay(EquipmentID, DelayID, StartTime, EndTime, Actual, Comment) VALUES (@EquipmentID, @DelayID, @StartTime, @EndTime, @Actual, @Comment)";

        using (IDbConnection con = DataFactory.CreateOpenConnection())
        {
            var data = new 
            { 
                    EquipmentID = delay.EquipmentID, 
                    DelayID = delay.DelayCode, 
                    StartTime = delay.StartTime, 
                    EndTime = delay.EndTime, 
                    Actual = delay.Actual, 
                    Comment = (delay.Comment ?? "")
            };

            con.Execute(sql, data);
            return true;
        }

    }

Respuesta aceptada

Creo que el problema con
Comment = (delay.Comment ?? "")

delay.Comment no es nulo, por lo que esta comprobación nunca se ejecutará. Usa la variable temp y obtén valor en ella

algo como esto

var a= delay.Comment;
var data = new 
            { 
                    EquipmentID = delay.EquipmentID, 
                    DelayID = delay.DelayCode, 
                    StartTime = delay.StartTime, 
                    EndTime = delay.EndTime, 
                    Actual = delay.Actual, 
                    Comment = a ?? ""
            };


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow