Frage

Ich bin ziemlich neu zu verspotten, so könnte dies etwas sein, ich bin gerade nicht auf noch Abholung, aber ich kann ein gutes Beispiel nirgendwo finden.

Ich versuche, standardmäßig zu behaupten, dass jede Klasse, die von meiner abstrakten Klasse erbt eine Sammlung im Konstruktor instanziiert. Hier ist die abstrakte Klasse:

public abstract class DataCollectionWorkflow : SequentialWorkflowActivity
{
        private readonly DataSet _output = new DataSet();
        private List<DataCollectionParameter> _params = null;

        public DataCollectionWorkflow()
        {
            _params = new List<DataCollectionParameter>();   
        }

        public virtual IList<DataCollectionParameter> Parameters
        {
            get { return _params; }
            set { _params = (List<DataCollectionParameter>)value; }
        }
}

Wie verspotten ich dies mit Rhino? Wenn ich einen GenerateMock<DataCollectionWorkflow> (oder einen Stub) zu tun, der Konstruktor läuft und die private Bereich „_params“ der mock initialisiert werden, aber die Mocks „Parameters“ Eigenschaft ist einfach null.

Offensichtlich ist die erzeugte Scheinunterklasse überschreibt die Eigenschaft Implementierung. Gibt es eine Möglichkeit, die Parameter Eigenschaft des Ausschlusses von neu implementiert werden?

Danke.

War es hilfreich?

Lösung

Okay, ich es herausgefunden. Chalk mich als eine andere Person an die Feinheiten der Rhino. Diese Art der Sache macht mich zu einem einfacheren Rahmen bewegen will, vielleicht würde ich MoQ überprüfen.

So ist die Antwort PartialMocks verwendet. Ich hatte kurz mit Erzeugen eines Teil Mock gespielt, aber wenn ich den Debugger darüber lief, bemerkte ich, dass die Eigenschaften nicht einmal null waren, sie seltsame Ausnahmen warfen, so dass ich nicht sehen viel tiefer. Ich war die kurze Formular AAA Art von Syntax.

Es stellte sich heraus, wenn ich einfach die Mock in der Wiedergabe-Modus versetzt, der Test funktioniert -. Die Eigenschaften werden verwendet, wie (wie sie mit einem Teil Mock sein sollte)

So, hier ist die Antwort:

[Test]
public void ShouldCreateParameterListInConstructor()
{
      var mockRepository = new MockRepository();
      var mock = mockRepository.PartialMock<DataCollectionWorkflow>();
      using ( mockRepository.Record() )
      {

      }
      using (mockRepository.Playback())
      {
           Assert.That(mock.Parameters, Is.Not.Null, "DataCollectionWorkflow base class didn't create new param collection");
      }
}

Ich weiß, dass dies ein Stateful-Test, aber es ist eigentlich ein einfacher Vorspiel zu einem gewissen Verhaltenstest, die die Eigenschaft in Frage betrifft, so wollte ich diesen Fall als Voraussetzung. Hoffe, es hilft jemand.

Andere Tipps

Versuchen Sie, _params virtuellen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top