首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReactiveUI测试

ReactiveUI测试
EN

Stack Overflow用户
提问于 2014-04-21 23:44:54
回答 1查看 263关注 0票数 0

我试图查看视图模型的结果是否正在执行正确的操作。

我的可观测值设置如下:

代码语言:javascript
复制
public FilterBoxViewModel()
{
    var asyncFilterResults = this.filterItemsCommand.RegisterAsyncTask(x => 
        this.PerformFilter(x as string));

    this.filteredItems = new ObservableAsPropertyHelper<IEnumerable<IFilterBoxItem>>(
        asyncFilterResults, _ => this.RaisePropertyChanged("FilteredItems"));

    this.WhenAnyValue(x => x.SearchTerm)
        .Throttle(TimeSpan.FromMilliseconds(50))
        .Skip(1)
        .Subscribe(this.filterItemsCommand.Execute);
}

然后再往下走

代码语言:javascript
复制
private async Task<IEnumerable<IFilterBoxItem>> PerformFilter(string searchTerm)
{
    if (string.IsNullOrWhiteSpace(searchTerm))
    {
        return Enumerable.Empty<IFilterBoxItem>();
    }

    // Perform getting the items on the main thread and async await the results. 
    // This is provide a immutable version of the results so we don't cause 
    // threading issues.
    var items = await Observable.Start(
        () => this.FilterBoxManager.RootElements.GetAllItemsEnumerable()
                  .ToList().Select(x => new { Name = x.Name, Item = x }),
                       RxApp.MainThreadScheduler);

    return
        items.Where(x =>
            x.Name.IndexOf(searchTerm, StringComparison.OrdinalIgnoreCase) >= 0)
                .Select(x => x.Item);
}

在我的测试中,我运行测试计划并推进它,但是,我让PerformFilter在我预期的不同时间执行。

我的测试是:

代码语言:javascript
复制
(new TestScheduler()).With(scheduler =>
{
    var viewModel = new FilterBoxViewModel();

    var testManager = new TestManager { RootElements = this.sampleItems };

    viewModel.FilterBoxManager = testManager;

    viewModel.SearchTerm = "folder";

    scheduler.AdvanceBy(TimeSpan.FromMilliseconds(51).Ticks);

    Assert.AreEqual(viewModel.FilteredItems.Select(x => x.Name), folderSearchResults);

    viewModel.SearchTerm = "apple";

    Assert.AreEqual(viewModel.FilteredItems.Select(x => x.Name), appleSearchResults);

});

如何使测试人员更可预测?

我正在运行ReactiveUI 5.5.1并在XAML应用程序中运行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-22 01:19:16

您的Throttle没有设置调度程序,这是一个典型的TestScheduler错误

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23207881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档