任何人都可以解釋爲什麼,當我通過調試器進行單元測試時,我在查看對象或屬性時獲得空引用。例如:Silverlight MVVM單元測試解釋
1 [TestMethod]
2 [Description("Test to confirm that upon initial class creation, the login view is loaded as the default content for the TaskRegion.")]
3 public void Shell_Initialisation_LoginViewIsLoadedByDefault()
4 {
5 Shell shell = new Shell();
6
7 TestPanel.Children.Add(shell);
8
9 Shell_ViewModel viewModel = shell.DataContext as Shell_ViewModel;
10
11 Assert.IsTrue(viewModel.TaskRegionContent is ContentControl);
12
13 EnqueueTestComplete();
14 }
[9號線當我在我的ViewModel字段設置爲殼視圖的DataContext的我得到一個「對象未設置爲實例...」異常。我確信我的datacontext正在設置在我的shell.xaml.cs中;整個文件:
1 using System.Windows;
2
3 namespace eg.WorkManager.UI.Shell
4 {
5 public partial class Shell
6 {
7
8 public Shell()
9 {
10 InitializeComponent();
11 this.Loaded += new RoutedEventHandler(Shell_Loaded);
12 }
13
14 void Shell_Loaded(object sender, RoutedEventArgs e)
15 {
16 this.DataContext = new Shell_ViewModel();
17 }
18 }
19 }
20
我知道我做錯了什麼,但任何人都可以解釋什麼?
謝謝, 馬克
所以我嘗試使用Justin Angels的WaitFor()方法,使用EnqueueConditional等待Loaded事件觸發。我仍然沒有看到具體的物體,所以爲了簡單起見我刪除了這些物體。 – 2009-04-08 15:25:05
加載可能不會在單元測試下觸發。正如Kent提到的那樣,Loaded只有在元素被添加到可視化樹中時纔會發生。除非你的單元測試實際顯示shell,否則Loaded不會觸發。 – 2009-04-09 14:59:07