我正在使用ReactiveUI-5.99.6,但无法通过此简单的测试通过
public class ViewModel : ReactiveObject
{
public ReactiveList<int> List { get; private set; }
public IReactiveCommand Command { get; private set; }
public ViewModel()
{
List = new ReactiveList<int>();
Command = ReactiveCommand.Create(List.Changed.Select(_ => List.Any()));
}
}
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
var vm = new ViewModel();
vm.List.Add(2);
Assert.IsTrue(vm.Command.CanExecute(null));
}
}
有人可以告诉我我在做什么错吗?
答案 0 :(得分:1)
我不知道版本5.99.6(!?),但是以下实现应该使您的单元测试通过版本8.7.2:
public class ViewModel : ReactiveObject
{
public ReactiveList<int> List { get; private set; }
public ICommand Command { get; private set; }
public ViewModel()
{
List = new ReactiveList<int>();
Command = ReactiveCommand.Create(() => { /* do something */ }, List.Changed.Select(_ => List.Any()));
}
}
如果将Command
属性的类型更改为ICommand
以外的任何其他值(例如ReactiveCommand<Unit, Unit>
),则单元测试将如下所示:
[TestMethod]
public async Task TestMethod1()
{
var vm = new ViewModel();
vm.List.Add(2);
Assert.IsTrue(await vm.Command.CanExecute.FirstAsync());
}
如果我的项目是.Net 4.5,我应该获得什么版本?
ReactiveUI 7.4.0支持.NET Framework 4.5。上面的解决方案也适用于该版本。