在我們的Silverlight主業務應用程序中,我們有許多基於用戶角色可見和/或啓用的控件(例如,只有在管理員角色中,管理菜單鏈接纔可見)。我們通過轉換器控制這種可見性使用MVVM/CSLA在Silverlight中單元測試XAML
我剛剛開始編寫單元測試,我希望能夠根據不同的角色測試這些控件的可見性(如果我們有一個bug,那將會非常糟糕)。但是,由於我們使用的是MVVM模式,並且控件沒有命名,所以我不知道如何去做。有什麼想法嗎?
在我們的Silverlight主業務應用程序中,我們有許多基於用戶角色可見和/或啓用的控件(例如,只有在管理員角色中,管理菜單鏈接纔可見)。我們通過轉換器控制這種可見性使用MVVM/CSLA在Silverlight中單元測試XAML
我剛剛開始編寫單元測試,我希望能夠根據不同的角色測試這些控件的可見性(如果我們有一個bug,那將會非常糟糕)。但是,由於我們使用的是MVVM模式,並且控件沒有命名,所以我不知道如何去做。有什麼想法嗎?
這正是ViewModel的用途。你應該能夠測試你的視圖模型容易(在你的情況下,我想它們是否暴露正確的角色來查看)。由於轉換器只是一個普通的課程,所以它們也應該被測試。
在單元測試方面,你真的得只有兩個任務做:
這裏是單元測試結束的地方。這些測試應該保證您的視圖能夠獲得適當的數據以按照您的計劃進行渲染。現在不管它是不同的東西,但這超出了單元測試的範圍。最終的測試屬於驗收測試,質量保證以及自動/腳本化的UI測試,而且通常是人工驗證。
我不認爲命名控件以任何方式打破MVVM。如果您基本上反對命名它們,您可以使用VisualTreeHelper來遍歷控件樹並找到您感興趣的控件。
您可以使用Moq來模擬視圖模型來模擬特定角色和Microsoft的Silverlight測試框架,以運行測試。
感謝您的輸入;並不是反對爲控件命名控件,而是爲了這個目的我們不得不重新命名控件(因爲之前沒有明顯需要命名它們,沒有命名)。 – Joe 2012-04-13 14:38:36
傑出的答案;非常感謝。如果我有足夠的代表點,我會投票:) – Joe 2012-04-13 15:48:52