8
votes

Comment se moquer de sqlparametercollection à l'aide de MOQ

J'essaie de simuler des opérations de base de données. J'ai un problème dans la moqueur sqlparametercollection code>. J'ai essayé de créer méthode virtuelle code> qui retournera dbparametercollection code> mais je perds toutes les fonctionnalités que sqlparametercollection code> donne comme addwithvalue code > Etc. Y a-t-il une façon de ma moquer sqlparametercollection code>? Y a-t-il une autre approche de l'unité test DAL? J'utilise MOQ.

code va comme ceci: p>

in dal: p> xxx pré>

dans le projet test d'unité: p> xxx pré>

- Solution - P>

crée une méthode d'extension pour ajouter du paramètre avec valeur. Merci Marc Gravell de me faire remarquer cette direction. P>

    public static IDbDataParameter AddParameterWithValue(this IDbCommand cmd, string paramName, object paramValue)
    {

        var dbParam = cmd.CreateParameter();
        if (dbParam != null)
        {
            dbParam.ParameterName = paramName;
            dbParam.Value = paramValue;
        }
        return dbParam;

    }


1 commentaires

Vous voudrez peut-être appeler .parameters.add avec le paramètre nouvellement créé, car cela est attendu avec une méthode d'addition


3 Réponses :


9
votes

Personnellement, j'approche ce problème en écrivant un addParameterwithvalue Extension à dBCommand (ou idbcommand ). Il doit être sur la commande de sorte que vous ayez accès à créeparamètre , puis appelle .parameters.add . .

Ceci permet une utilisation facile contre toute pile ado.net, y compris des abstractions telles que les décorateurs de journalisation.


2 commentaires

@AsDFG Je pense que j'ai laissé une version de cela dans "DAPPER" si vous en avez besoin


Ce sera cool. J'écris la méthode de l'extension mais je me lance.



2
votes

@AsDFG HI j'ai fondamentalement moqué de la collection de paramètres comme ci-dessous xxx

espère que cela aide


0 commentaires

1
votes

hi j'ai trouvé la solution.

Je devais mettre en œuvre un MOQ pour l'interface IdataParameterCollection et devait l'envoyer à l'instance d'idbcommand.

avec que mon objet idbcommand.Parameters est devenu différent de null. xxx


0 commentaires