Ungültige Einstellung auf eine nicht-virtuelle member mit MOQ

Ich bin moqing eine Schnittstelle, die hat:

Dictionary<string, object> InstanceVariables { get; set; }

Habe ich einen neuen mock von der Oberfläche und versuchen, es so einrichten, es gibt nur einen zufälligen string der in etwa so:

_mockContext.SetupGet(m => m.InstanceVariables[It.IsAny<string>()]).Returns(@"c:\users\randomplace");

Aber ich glaube, ich bekomme eine Fehlermeldung:

{"Invalid setup on a non-virtual (overridable in VB) member: m => m.InstanceVariables[It.IsAny<String>()]"}

Was bedeutet das genau? Ich bin lustig das interface, so sollte dies nicht ein problem sein?

Dank

  • Warum brauchen Sie, um ein mock Dictionary wenn Sie erstellen ein Wörterbuch wird Sie alle erforderlichen Felder aus?
  • Weil ich was ändern will kommt aus InstanceVariables, wenn ich ausführen, die Methode, die ich übergeben habe in meinem mockContext Objekt in
  • Ihre Immobilie ist ein Dictionary, nicht ein IDictionary. Aus diesem Grund machen Sie es kompilieren müssen Sie verspotten die konkrete Umsetzung, nicht die Schnittstelle, wie Sie behaupten (obwohl ich kann nicht wissen, dass für sicher, da Sie nicht posten, dass der code). Also, der Fehler ist richtig - man kann Sie nicht überschreiben nicht-virtueller Mitglied (und das Wörterbuch indexer ist nicht im virtuellen). Allerdings, @Valentin die Frage steht immer noch - warum nicht erstellen Sie einfach ein dictionary mit den Werten, wie Sie wünschen für Ihre unit-test - ein Wörterbuch ist ein dummer Daten-speichern - es besteht keine Möglichkeit, es zu verspotten!
InformationsquelleAutor magna_nz | 2016-06-12
Schreibe einen Kommentar