Question

Comment sont les gens de l'unité de test de code qui utilise Linq to SQL?

Était-ce utile?

La solution

Mise à jour:

Fredrik a mis un exemple de solution sur la façon de faire de test de l'unité linq2sql applications sur son blog.Vous pouvez le télécharger à:

http://web.archive.org/web/20120415022448/http://iridescence.no/post/DataContext-Repository-Pattern-Example-Code.aspx

Non seulement je pense que son grand qu'il avait affiché un exemple de solution, il a également réussi à extraire des interfaces pour toutes les classes, ce qui rend la conception plus découplés.

Mon ancien post:

*J'ai trouvé ces blogs qui je pense sont un bon début pour faire le DataContext wrapper:Link1 Link2

Ils couvrent presque le même sujet, sauf que le premier met en œuvre des moyens pour extraire des interfaces pour les tables ainsi.Le second est plus vaste, même si, je l'ai donc inclus en tant que bien.*

Autres conseils

3 ans de retard, mais c'est comment je le fais:

https://github.com/lukesampson/LinqToSQL-test-extensions/

Pas besoin d'écrire un wrapper ou faire plein de plomberie, il suffit de déposer le modèle T4 à côté de votre .dbml et vous obtenez:

  1. Une interface pour votre contexte de données par exempleIExampleDataContext
  2. En mémoire une maquette de votre contexte de données par exempleMemoryExampleDataContext

Les deux utilisent automatiquement les correspondances que vous avez déjà configuré dans votre DBML.

Ainsi, vous pouvez faire des choses comme

public class ProductRepo {
    IExampleDataContext DB { get; set };
    public ProductRepo(IExampleDataContext db) {
        DB = db;
    }

    public List<Product> GetProducts() {
        return DB.Products.ToList();
    }
}

et vous pouvez appeler ce soit avec

new ProductRepo(new MemoryExampleDataContext()).GetProducts(); // for testing

ou

new ProductRepo(new ExampleDataContext()).GetProducts(); // use the real DB

Envelopper le DataContext, puis se moquer de l'emballage.Sa le moyen le plus rapide pour y arriver, même si elle nécessite un codage pour les tests, certaines personnes pensent que les odeurs.Mais parfois, lorsque vous avez des dépendances qui ne peut pas être (facilement) une fantaisie, c'est le seul moyen.

Linq rend les tests plus faciles.Les requêtes Linq fonctionne tout aussi bien sur les Listes comme sur le Linq-to-sql choses.Vous pouvez échanger Linq to SQL pour les objets de la liste et de tester de cette façon.

Mattwar plus à Le Rétif Journal Web avait un excellent article sur la façon de se moquer d'un extensible Linq2Sql contexte de données.Check it out -- ON SE MOQUE DE NIX - EXTENSIBLE LINQ TO SQL DATACONTEXT

Normalement, vous n'avez pas besoin de tester la partie du code qui utilise LINQ to SQL, mais si vous le voulez vraiment, vous pouvez utiliser les mêmes ensembles de données que vous interrogez sur le serveur et de les transformer en des objets en mémoire et exécuter les requêtes LINQ contre qui (qui serait d'utiliser la Énumérable méthodes à la place de Queryable).

Une autre option est d'utiliser Matt Warren mockable version du DataContext.

Vous pouvez également obtenir les instructions SQL que LINQ to SQL utilise par les obtenir via le débogueur (à partir de la IQueryable objet), cochez ceux manuellement, puis de les inclure dans les tests automatisés.

LINQ to SQL est vraiment agréable de test de l'unité qu'il a la capacité de créer des bases de données à la volée à partir de ce qui est défini dans votre DBML.

C'est vraiment agréable de tester une couche ORM par la création de la DB à travers le DataContext et de l'avoir vide pour commencer.

Je couvre sur mon blog ici: http://web.archive.org/web/20090526231317/http://www.aaron-powell.com/blog/may-2008/unit-testing-linq-to-sql.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top