2010-01-08 33 views
1

之前是這樣的:單元測試TryUpdateModel在MVC 2 RC尷尬的行爲

TryUpdateModel(entity, null, null, new[] { "Name", "Controller" }); 

我能單元測試這個控制器動作只是在我的測試中使用這個:

controller.ValueProvider = myFormCollection.ToValueProvider(); 

將我的代碼遷移到MVC 2後,這不再起作用。它在FormCollection中的GetValue方法實現中保持失敗,因爲它驗證您要求的值不爲null或爲空。事情是這個代碼在運行時工作,但不是在我的單元測試。我沒有使用前綴,因此我將NULL作爲前綴值發送。

我查看了MVC 2 RC源代碼,並且控制器的ValueProvider查找的第一個值是前綴,因此它失敗了。我必須將哪個提供程序分配給controller.ValueProvider,以便它可以在我的單元測試中工作?

編輯:非常簡短地問,如何告訴TryUpdateModel不要在我的單元測試中使用前綴,以便它不引發異常?

謝謝!

回答

2

MVC 2 RC中的已知錯誤將在下一次修正中修復。

從在這個問題上一個單獨的電子郵件:

順便說一句,而單元測試你 可能要使用 SimpleValueProvider類型。 (可以在MVC單元測試項目中找到 ,所以 如果需要 ,則可以將其複製到自己的項目中。)它實際上只是一個 字典,它也可以 實現IValueProvider。如果你想存儲 的值,例如{「foo」,42}而不是 {「foo」,「42」}來進行單元測試,那麼 會更有用。