Nous utilisons UnityAutoMoq pour se moquer de la plupart de nos interfaces dans nos tests unitaires, mais j'ai récemment rencontré une situation où nous voulions utiliser un framework de test pour simuler plus complètement le comportement réel (appelez-le test d'intégration si cela vous aide à accepter ce que je fais).Enregistrer des interfaces génériques avec UnityAutoMoqContainer
Je m'attendais à ce que UnityAutoMoq me laisse enregistrer des mappages concrets au lieu de permettre à UnityAutoMoqContainer de différer le fait de se moquer de l'interface. Cela est vrai pour tout ce que j'ai essayé, sauf pour les interfaces génériques. Si vous êtes visuel comme moi, voici un extrait de ce que je suis en train:
public static void Register(IUnityContainer container)
{
...
container.RegisterType(typeof(IService<>), typeof(TestFrameworkService<>),
new HierarchicalLifetimeManager(), new InjectionFactory(Create));
...
}
private static object Create(IUnityContainer container, Type type, string name)
{
var T = type.GetGenericArguments().Single();
return new TestFrameworkService<T>();// For simplicity, pretend this works
}
Comme vous pouvez le voir ci-dessus, je me inscris l'interface générique pour un béton générique, en fonction lors de l'injection puis usine pour le résoudre en utilisant le type entrant (l'implémentation réelle a été omise pour plus de simplicité). Cela fonctionne avec un UnityContainer normal, renvoyant le béton attendu. Le UnityAutoMoqContainer renvoie à la place un faux, en contournant complètement l'usine d'injection.
Est-ce que quelqu'un a essayé quelque chose comme ce que j'essaie d'accomplir? Des idées?