Je travaille à rendre EF plus facile à tester en écrivant quelques aides qui me feront des propriétés. J'ai deux ou trois champs soutenantActiver le type avec un type de retour générique
private Mock<DbSet<Workflow>> mockedWorkFlows;
private Mock<DbSet<WorkflowError>> mockedWorkFlowErrors;
Et je veux une fonction générique pour pouvoir me retourner le champ de support correct avec la fonction suivante
public Mock<DbSet<T>> Mocked<T>(T t) where T : class
{
if ((object)t is Workflow)
{
return mockedWorkFlows; //cannot Workflow to T
}
}
Il y a plusieurs champs d'appui privés que je veux être renvoyé en fonction du type passé.
Cependant, même si j'ajoute une contrainte de classe de Workflow
, j'obtiens la même erreur.
J'ai également essayé d'activer le type t's
mais pas de chance non plus. Les types des plusieurs champs de support ne partagent pas un ancêtre commun, autre que l'objet. Est ce que j'essaye de faire possible?
Je ne vois pas ce que le point de cette méthode serait. Créer un simulacre prend 1 ligne de code et si vous voulez installer le simulacre vous devez configurer individuellement chaque maquette de toute façon, alors pourquoi ne pas créer simplement une usine pour certains types de mock. – FCin
Il y a plus d'une ligne de code pour imiter un IDbSet de votre contexte EF. J'ai une interface fluide pour assigner les données, mais vous devez exposer le champ de sauvegarde quelque part parce que lorsque vous espionnez, c'est ce qui est réellement appelé. Je veux juste une API plus petite au lieu d'avoir un WorkflowsMocked, WorkflowErrorsMocked, etc. pour toutes les propriétés IDbSet du contexte. –
wootscootinboogie
Au lieu de se moquer de 'DbSet', avez-vous envisagé de vous moquer de' SqlConnection' à la place, par exemple, en utilisant le framework Effort? https://github.com/tamasflamich/effort –