我遇到了一个单独测试ReactiveCommand的麻烦世界。我按照这里描述的描述ReactiveCommand CanExecute reacting to changes in a collection。应用程序正常工作 - 根据列表的内容启用或禁用按钮。
我的单元测试无法按预期工作。我有一个如下:
public void myTest()
{
var vm = new MyViewModel();
Assert.IsTrue(vm.Ok.CanExecute(null))
//Do something that will invalidate the button
Assert.IsFalse(vm.Ok.CanExecute(null))
}
此测试将立即失败。但是,如果我订阅了CanExecuteObservable,则测试的行为符合预期:
public void myTest()
{
var vm = new MyViewModel();
vm.Ok.CanExecuteObservable.Subscribe(x => {});
Assert.IsTrue(vm.Ok.CanExecute(null))
//Do something that will invalidate the button
Assert.IsFalse(vm.Ok.CanExecute(null))
}
这是预期的行为吗?我正在使用ReactiveUI 6.2。
另外,我的单元测试显示了很多“当前线程没有与之关联的Dispatcher”,尽管我的设置中有以下内容:
[TestInitialize]
public void Init()
{
//This line throws ...
RxApp.TaskpoolScheduler = Scheduler.CurrentThread;
}
答案 0 :(得分:1)
嗯,我是个白痴......
RxApp.MainThreadScheduler = Scheduler.CurrentThread;
一段时间后,一切都开始变得相同......