Je suis en train de se moquer d'une résolution Autofac, commeméthode d'extension "Resolve" de Mocking Autofac avec Typemock
using System;
using Autofac;
using TypeMock.ArrangeActAssert;
class Program
{
static void Main(string[] args)
{
var inst = Isolate.Fake.Instance<IContainer>();
Isolate.Fake.StaticMethods(typeof(ResolutionExtensions), Members.ReturnNulls);
Isolate.WhenCalled(() => inst.Resolve<IRubber>()).WillReturn(new BubbleGum());
Console.Out.WriteLine(inst.Resolve<IRubber>());
}
}
public interface IRubber
{}
public class BubbleGum : IRubber
{}
En venant de Moq, la syntaxe et les exceptions de Typemock me confondez beaucoup. Ayant initialement exécuté ceci dans un TestMethod, j'ai continué à obtenir une exception ressemblant à "WhenCalled ne peut pas être exécuté sans un comportement complémentaire". J'ai essayé de définir des comportements pour tout le monde et leurs mères, mais en vain.
Ensuite, j'ai débogué a traversé le cycle de test, et j'ai vu qu'une exception réelle a été déclenchée depuis Autofac: IRubber n'a pas été enregistré.
Il est donc évident que la fonction Resolve statique n'est pas faussée, et je ne peux pas la faire truquer, peu importe comment je vais l'accrocher.
Isolate.WhenCalled(() => ResolutionExtensions.Resolve<IRubber>(null)).WillReturn(new BubbleGum());
... jette une exception Autofac plaint que le IComponentContext ne peut être nulle. Le nourrir IContainer vraisemblablement truqué (ou truquer un IComponentContext à la place) me renvoie à l'erreur "IRubber non enregistré".
Comment vous moqueriez Possédé cependant? –
Il est généralement possible de traiter 'Owned' comme s'il s'agissait d'un type de base comme' List 'ou' string' - construire des valeurs de 'Owned ' en utilisant son constructeur quand vous en avez besoin, en passant éventuellement un simulacre ' T' instance. J'espère que cela t'aides. –
Pour le paramètre lifeTime ctor de la classe appartenant, est-il bien de passer dans un simulacre d'IDisposable? Qu'est-ce qui devrait vraiment être passé en tant que param? Merci! –