Existe-t-il un fournisseur en mémoire pour Entity Framework?

entity-framework rhino-mocks

Question

Je suis un code de test unitaire écrit avec ADO .NET Entity Framework. Je voudrais remplir une base de données en mémoire avec des lignes et m'assurer que mon code les récupère correctement.

Je peux me moquer d'Entity Framework à l'aide de Rhino Mocks, mais cela ne serait pas suffisant. Je dirais à la requête quelles entités me retourner. Cela ne testerait ni la clause where ni les instructions .Include (). Je veux être sûr que ma clause where correspond uniquement aux lignes que je souhaite et à aucune autre. Je veux être sûr d'avoir demandé les entités dont j'ai besoin, et aucune que je n'ai pas.

Par exemple:

class CustomerService
{
    ObjectQuery<Customer> _customerSource;
    public CustomerService(ObjectQuery<Customer> customerSource)
    {
        _customerSource = customerSource;
    }
    public Customer GetCustomerById(int customerId)
    {
        var customers = from c in _customerSource.Include("Order")
            where c.CustomerID == customerId
            select c;
        return customers.FirstOrDefault();
    }
}

Si je me moque de ObjectQuery pour renvoyer un client connu contenant des commandes, comment puis-je savoir que CustomerService a la clause right where et include? Je préférerais insérer des lignes de client et des lignes de commande, puis affirmer que le bon client a été sélectionné et que les commandes sont remplies.

Réponse acceptée

Il n’existe actuellement aucun fournisseur en mémoire pour EF, mais si vous examinez Highway.Data, il possède une interface d’abstraction de base et un InMemoryDataContext.

Test d'accès aux données et EF avec Highway.Data


Réponse populaire

Un fournisseur InMemory est inclus dans EF7 (version préliminaire).

Vous pouvez utiliser le package NuGet ou en savoir plus à ce sujet dans le référentiel EF sur GitHub ( Afficher la source ).



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow