Wie zu Verspotten (mit Moq) Einheit Methoden

Erweiterung Methoden sind nicht gut für die Prüfung (das ist hier beschrieben: Spöttische Erweiterung Methoden mit Moq, http://www.clariusconsulting.net/blogs/kzu/archive/2009/12/22/Howtomockextensionmethods.aspx).

Aber wahrscheinlich gibt es einige Lösungen für Spott der Einheit Methoden? In meinem Fall habe ich die folgende Funktion:

public class MyManager
{
    public MyManager(IUnityContainer container) : base(container) { }

    public IResult DoJob(IData data)
    {
        IMyLog log = MyContainer.Resolve<IMyLog>();

        ... use log.Id ...

        MyContainer.Resolve<...>();//usage for other purposes...
    }

Ich möchte sicher sein, dass 'DoJob-Methode", wird immer wieder 'IMyLog' - Objekt aus dem container, aber nicht aus anderen Quellen... wie könnte ich das testen?

Meine ursprüngliche Idee war, zu ändern 'DoJob-Methode" Implementierung und Nutzung:

IMyLog log = UnityContainer.Resolve(typeof(IMyLog)) as IMyLog;

Aber "Beheben(Typ t,...),' ist auch eine Erweiterung Methode...

Irgendwelche Gedanken sind willkommen.

P. S. Bitte beachten Sie, dass "meine log' - Objekt erstellt, weit Weg von MyManager.DoJob...

Abhängigkeiten auf den IoC-container sind ein antipattern. Versuchen Sie, beschränken Sie den container auf ein top-level-Klasse und Sie es schaffen, Ihre anderen Objekte. @TheCodeKing schlägt, auto-Fabriken, die helfen können. Siehe kozmic.pl/2010/06/20/wie-ich-benutze-inversion-of-control-Container

InformationsquelleAutor Budda | 2010-09-24

Schreibe einen Kommentar