Mam metody działania jak to w moim kontrolerJak można ustawić ISingleResult? Czy powinienem? czy istnieje lepsza metoda?
public ActionResult Index()
{
using (NorthwindDataContext db = new NorthwindDatacontext())
{
var results = db.GetRecordSets(arg1, ....).ToList();
// use results as list
}
return View();
}
i chciałem zacząć testy dla niej (tak, po tym jak został zbudowany, a nie przed ... ale kod został napisany zanim zacząłem używać TDD tak ...)
i zorientowali się, że dodanie właściwości, takie jak ten do sterownika
public delegate NorthwindDatacontext ContextBuilderDelegate();
public ContextBuilderDelegate ContextBuilder { get; set; }
mogę dodać w czymś konstruktora jak to ...
ContextBuilder =() => new NorthwindDatacontext();
wtedy mogłem przetestować ActionMethod ustawienie właściwości ContextBuilder z mock z NorthwindDatacontext
var controller = new MyController();
var mockDataContext = new Mock<NorthwindDatacontext>();
controller.ContextBuilder =() => mockDataContext.Object;
... Ale nie znalazłem sposób na wykorzystanie tego powodu wszystkie metody NorthwindDatacontext używać ISingleResult jak returnType i nie mogę znajdź sposób, aby utworzyć obiekt z tym interfejsem. Próbowałem to
var theResult = new List<GetRecordSetsResult>();
// fill the data structure here with the provided result...
mockDataContext.Setup(c => c. GetRecordSets()).Returns(theResult as
ISingleResult<GetRecordSetsResult>);
ale to nie działa, ponieważ theResult jest null, gdy przekształca się ISingleResult.
Czy istnieje sposób utworzenia obiektu ISingleResult w celu przetestowania w ten sposób lub robię niewłaściwy sposób robienia rzeczy tutaj?
Dzięki z góry
Dzięki, twoje pytanie i pierwsza odpowiedź naprawdę pomogły mi rozwiązać problem. – Odd