我已經將我的代碼移植到WinRT和Rx的RTM版本。我在我的ViewModels中使用ReactiveUI。在移植代碼之前,我的單元測試運行沒有問題,但現在我得到了一個奇怪的行爲。使用Rx RTM觀察命令和單元測試
這裏測試:
var sut = new MyViewModel();
myViewModel.MyCommand.Execute(null) //ReactiveAsyncCommand
Assert.AreEqaul(0, sut.Collection.Count)
如果我調試一步的測試步驟,斷言是不失敗,但使用測試運行它的失敗......
收集斷言是通過訂閱該命令的方法修改:
MyCommand.RegisterAsyncTask(_ => DoWork())
.ObserveOn(SynchronizationContext.Current)
.Subscribe(MethodModifyingCollection);
該代碼在將其移動到RTM之前正在工作。我也嘗試刪除ObserveOn
,並在Assert之前添加await Task.Delay()
,但未成功。
感謝Stephen的回答。我將在明天進行測試,但是我在WinRT上,所以WPF相關的解決方案不是一種選擇。 TestScheduler似乎很有前途。 – MatthieuGD
'WpfContext' - 儘管名稱 - 只是使用Dispatcher,我相信它適用於SL,所以我期望它可以用於WinRT。 –