Couverture de code dans VS2012 ne montrant pas l'objet typé dynamiquement utilisé pour Dapper comme couvert

c# dapper integration-testing visual-studio-2012

Question

Nous utilisons VS2012 Ultimate (merci BizSpark!) Et nous avons commencé à tester l'intégration pour nous assurer que nos requêtes Dapper fonctionnent avec la base de données dans la boucle. J'essaie de garantir une couverture à 100% du code pour toutes les classes associées à la base de données.

Dans l'une de nos classes, le rapport de couverture de code des tests de notre fonction AddDelay() montre que les lignes déclarant et initialisant l'objet anonyme de données ne sont pas couvertes, mais il faut que Execute fonctionne. Il y a un objet simulé qui est passé et tout semble fonctionner, mais je ne peux pas comprendre pourquoi la couverture du code n'est pas 100% pour cette méthode.

Toutes les suggestions expliquant pourquoi le rapport montre qu'il n'est pas couvert étant donné que c'est une fonction super simple, et que l'objet de data est transmis à la fonction d'exécution en tant que paramètre?

    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;
        }

    }

Réponse acceptée

Je pense problème avec
Commentaire = (delay.Comment ?? "")

delay.Comment n'est pas null donc cette vérification ne sera jamais exécutée. Utilisez la variable temp et obtenez la valeur

quelque chose comme ça

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


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi