Using the WPF Dispatcher in unit tests

前端 未结 16 2133
北恋
北恋 2020-11-27 02:48

I\'m having trouble getting the Dispatcher to run a delegate I\'m passing to it when unit testing. Everything works fine when I\'m running the program, but, during a unit te

16条回答
  •  挽巷
    挽巷 (楼主)
    2020-11-27 03:19

    Creating a DipatcherFrame worked great for me:

    [TestMethod]
    public void Search_for_item_returns_one_result()
    {
        var searchService = CreateSearchServiceWithExpectedResults("test", 1);
        var eventAggregator = new SimpleEventAggregator();
        var searchViewModel = new SearchViewModel(searchService, 10, eventAggregator) { SearchText = searchText };
    
        var signal = new AutoResetEvent(false);
        var frame = new DispatcherFrame();
    
        // set the event to signal the frame
        eventAggregator.Subscribe(new ProgressCompleteEvent(), () =>
           {
               signal.Set();
               frame.Continue = false;
           });
    
        searchViewModel.Search(); // dispatcher call happening here
    
        Dispatcher.PushFrame(frame);
        signal.WaitOne();
    
        Assert.AreEqual(1, searchViewModel.TotalFound);
    }
    

提交回复
热议问题