2 votes

Quel est l'intérêt de IDbSet en mémoire?

Je vois l'une des façons dont les gens testent des solutions basées sur EntityFramework (code first) est de créer une interface pour leur contexte personnalisé qui contient des propriétés de type IDbSet (au lieu de DbSet). Ensuite, dans les tests unitaires, ils utilisent des InMemoryDbSets.

Je suis nouveau dans EntityFramework et cela semblait être une excellente façon de le faire. Mais cela ne fonctionne pas du tout, n'est-ce pas? Lorsque nous utilisons des InMemoryDbSets, nous pouvons créer et exécuter des requêtes qui utilisent n'importe laquelle des propriétés de nos objets entité. Même si ce sont des propriétés calculées. Mais pendant l'exécution, les mêmes requêtes afficheront "Le membre de type spécifié 'NomDeLaPropriété' n'est pas pris en charge dans LINQ to Entities. Seuls les initialiseurs, les membres d'entité et les propriétés de navigation d'entité sont pris en charge."

Donc soit je ne comprends pas quelque chose (probablement), soit il n'est pas possible de tester unitairement du tout si vous utilisez un contexte personnalisé avec IDbSets.

0voto

Peri Points 3670

D'accord, j'ai fait beaucoup de recherches et il semble que la seule manière raisonnable (si vous voulez exposer IDbSet) est de faire des tests d'intégration. Oubliez simplement les tests unitaires.

Ladislav Mrnka l'a très bien résumé ici. Fake DbContext of Entity Framework 4.1 to Test

J'ai également vu sur le blog d'Ayende (http://ayende.com/) que c'est la façon dont il le fait.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X