Je me mange en ce moment. C'est comme le cadre d'entité n'est pas testable. J'ai lu beaucoup d'articles et de threads où ils utilisent une unité de travail ou de MOQ ou du motif de répétition.
Je suis dans une phase que je ne peux pas changer beaucoup de mon architecture de ma candidature. L'application fonctionne pleinement en ce moment mais pour être sûr que je dois avoir une couverture de code élevée, ce qui le teste. p>
pour tester, j'utilise la méthode "Faux context" où je peux utiliser le faux pour la moqueur et le vrai pour la connexion à la base de données. P>
J'ai utilisé cela comme un Exemple. http://romiller.com/ 2010/09/07 / EF-CTP4-TIPS-TIPS-TESTS-TESTS-AVEC-FAKE-DBCONTEXT / P>
Là, vous pouvez voir que le contexte est écarté et utilisé comme une interface. Comme: p>
public interface IEmployeeContext
{
IDbSet Department Departments { get; }
IDbSet Employee Employees { get; }
int SaveChanges();
}
public class EmployeeContext : DbContext, IEmployeeContext
{
public IDbSet Department Departments { get; set; }
public IDbSet Employee Employees { get; set; }
}
public class FakeEmployeeContext : IEmployeeContext
{
public FakeEmployeeContext()
{
this.Departments = new FakeDepartmentSet();
this.Employees = new FakeEmployeeSet();
}
public IDbSet Department Departments { get; private set; }
public IDbSet Employee Employees { get; private set; }
public int SaveChanges()
{
return 0;
}
}
}
3 Réponses :
Ajoutez simplement la propriété dans l'interface de contexte. BTW, vous n'avez pas besoin du fakecontext, vous pouvez simplement créer une maquette de l'interface et configurer les propriétés pour renvoyer vos fausses jeux de données. De cette façon, vous pouvez ajouter / supprimer autant de méthodes et de propriétés de l'interface, comme vous le souhaitez. P>
Chaque fois que j'ajoute cette propriété de mon interface, j'ai également besoin de le définir dans le contexte hérité de l'interface .. Ce qui signifie que je dois écrire la méthode de plus en plus?
Avez-vous envisagé de jouer des tests d'intégration à la place? P>
Vous pouvez avoir des tests d'intégration contre un vrai EF DBContext, Il suffit de lui donner une chaîne de connexion différente dans l'app.config du projet d'unité-tests. P>
lire Ce et toutes les réponses à cela. P>
Donc, fondamentalement, je vais tester une vraie fausse base de données de Visual Studio elle-même?
Test d'intégration c'est! Merci @liel cela m'a aidé beaucoup. J'ai retourné mes contextes. La beauté de ceci est complètement séparée au lieu de créer de faux contextes qui ne sont qu'un code inutile.
Merci à @liel j'ai réussi à obtenir ce travail. Création d'un «test» DB pour les tests d'intégration. Au lieu d'utiliser un code non évaluée à mon avis. Mon projet est maintenant pleinement indépendante en utilisant cette méthode. et créer une nouvelle chaîne de connexion dans mon projet de test dans App.config. P> Merci à tous pour vos réponses! P> P>