Ich habe eine Aktion-Methode wie dies in meinem ControllerWie moq ich ein ISingleResult? Sollte ich? oder gibt es eine bessere Methode?
public ActionResult Index()
{
using (NorthwindDataContext db = new NorthwindDatacontext())
{
var results = db.GetRecordSets(arg1, ....).ToList();
// use results as list
}
return View();
}
und ich wollte es machen Tests starten (ja, nachdem sie gebaut wurde, nicht vor ... aber der Code geschrieben wurde, bevor ich begann zu verwenden TDD so ...)
und ich herausgefunden, dass eine Eigenschaft wie dieser an die Steuerung
Zugabepublic delegate NorthwindDatacontext ContextBuilderDelegate();
public ContextBuilderDelegate ContextBuilder { get; set; }
ich im Konstruktor so etwas wie diese könnte hinzufügen ...
ContextBuilder =() => new NorthwindDatacontext();
dann konnte ich die ActionMethod testen Sie die ContextBuilder Eigenschaft mit einem Mock von NorthwindDatacontext Einstellung
var controller = new MyController();
var mockDataContext = new Mock<NorthwindDatacontext>();
controller.ContextBuilder =() => mockDataContext.Object;
Aber ... ich keine Möglichkeit gefunden, dies zu verwenden, da alle Methoden der NorthwindDatacontext als Rückgabetyp verwenden ISingleResult und ich kippe finde den Weg, um ein Objekt mit dieser Schnittstelle zu erstellen. Ich habe versucht, diese
var theResult = new List<GetRecordSetsResult>();
// fill the data structure here with the provided result...
mockDataContext.Setup(c => c. GetRecordSets()).Returns(theResult as
ISingleResult<GetRecordSetsResult>);
aber es funktioniert nicht, weil theResult null ist, wenn zu ISingleResult umgewandelt.
Gibt es eine Möglichkeit, ein ISingleResult-Objekt zu erstellen, um auf diese Weise zu testen, oder mache ich den falschen Weg, um die Dinge hier zu tun?
Vielen Dank im Voraus
Danke, Ihre Frage und die erste Antwort hat mir wirklich geholfen, mich zu lösen Problem. – Odd