Da quando ho eseguito l'aggiornamento da MVC 2 a MVC 3 RC, l'utilizzo di TryUpdateModel causa una eccezione NullReferenceException. Questo problema si verifica solo quando si esegue il mio metodo di azione come parte di un test unitario. L'esecuzione sul server effettivo funziona come previsto.TryUpdateModel genera NullReferenceException nel test di unità ASP.NET MVC 3
Ecco una traccia dello stack di eccezione:
System.NullReferenceException: Oggetto riferimento non impostato a un'istanza di un oggetto . a System.Web.Mvc.JsonValueProviderFactory.GetValueProvider (ControllerContext controllerContext) a System.Web.Mvc.ValueProviderFactoryCollection. <> c_ DisplayClassc.b _7 (ValueProviderFactory fabbrica) a System.Linq.Enumerable.WhereSelectEnumerableIterator
2.MoveNext() at System.Linq.Enumerable.WhereSelectEnumerableIterator
2.MoveNext() a System.Collections.Generic.List raccolta) a System.Linq. Enumerable.ToList [TSource] (IEnumerable`1 fonte) System.Web.Mvc.ValueProviderFactoryCollection.GetValueProvider (ControllerContext controllerContext) a System.Web.Mvc.Controller.TryUpdateModel [tModel] (tModel modello, prefix String)
... il mio codice f rom qui ....
Nel caso in cui è importante, il mio controller ha la seguente firma:
[AcceptVerbs(HttpVerbs.Post)]
public virtual ActionResult Edit(int id, FormCollection collection)
{
}
La mia ipotesi è che questo ha a che fare con il nuovo modo DI lavora in MVC3, ma Non riesco a capire cosa sto sbagliando. Forse c'è qualcosa in termini di configurazione DI richiesta in MVC 3, ma non era richiesta in MVC 2?
Questa non è una buona idea, perché stai aggiungendo il codice per facilitare i test nel codice di produzione. Viene eseguito anche su ogni richiesta ed è completamente inutile. –
Perché non usare semplicemente la riga "ValueProvider = ..." nella configurazione del controller nei test delle unità. – JoelFan