public string CurrentUserLogin { get { if (string.IsNullOrEmpty(_currentUserLogin)) RetrIEveCurrentUserLogin(); return string.IsNullOrEmpty(_currentUserLogin) ? _currentUserLogin : _currentUserLogin.Replace(@"\",@"\"); } set { if (_currentUserLogin != value) { _currentUserLogin = value; RaisePropertyChanged(CurrentUserLoginPropertyname); } }}private voID RetrIEveCurrentUserLogin() { DataService.GetCurrentUserLogin(result => { dispatcherHelper.UIdispatcher.BeginInvoke(() => { CurrentUserLogin = result; }); });}
这就是我的数据服务的样子:
public voID GetCurrentUserLogin(Action<string> callback) { // create query request var query = ondemandContext.createquery<string>("GetCurrentUserLogin"); var request = (httpWebRequest)WebRequest.Create(query.RequestUri); request.BeginGetResponse(asyncResult => { var responseStream = request.EndGetResponse(asyncResult).GetResponseStream(); var responsedocument = Xdocument.Load(responseStream); callback(responsedocument.Root.Value); },null);}
当我运行SL应用程序时,一切都很好.但是我遇到的问题是当我尝试使用SL Unit Testing Framework编写单元测试时.我可以毫无问题地测试我的数据服务,但似乎dispatcherHelper正在为我的所有测试投入一个扳手,因为dispatcherHelper.UIdispatcher在触发时始终为null.我假设它与initlization有关(在我的SL应用程序的Application_Startup()中).我尝试在我的测试应用程序中初始化它,但这没有帮助.我也尝试过使用dispatcherHelper.CheckBeginInvokeOnUI(),但这对问题没有影响.
想法?
解决方法 AC,我刚刚创建了一个简单的SL UT项目,我在App.XAML.CS中做了这个
private voID Application_Startup(object sender,StartupEventArgs e){ RootVisual = UnitTestSystem.CreateTestPage(); dispatcherHelper.Initialize();}
然后我将其设置为测试(在tests.cs中):
[TestMethod]public voID TestMethod1(){ Assert.IsNotNull(dispatcherHelper.UIdispatcher,"UI dispatcher should not be null"); dispatcherHelper.CheckBeginInvokeOnUI(() => { // Do nothing var x = 1; });}
这对我有用.我甚至在“var x = 1;”上设置了一个断点.它击中了断点.这会解决您的问题吗? (如果是,请将其标记为答案).
总结以上是内存溢出为你收集整理的silverlight – 使用MVVM Light&DispatcherHelper进行单元测试全部内容,希望文章能够帮你解决silverlight – 使用MVVM Light&DispatcherHelper进行单元测试所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)