如何模拟ObservableCollection

本文关键字:ObservableCollection 模拟 何模拟 | 更新日期: 2023-09-27 18:19:26

我有以下内容:

class foo : ObservableCollection<Int32>
{
  //Stuff
}

[Test]
public void test()
{
  var foo = Mock.Of<foo>();
  int count = 0;
  Mock.Get(foo).Setup(x => x.Add(It.IsAny<Int32>())).Callback(() => count++);
  Mock.Get(foo).Setup(x => x.Count).Returns(() => count);
  //Do Stuff
}

然而,AddCount,尤其是indexer[]是不可替代的。我唯一的追索权是在我的foo类中创建调用AddAddfoo吗?

如何模拟ObservableCollection

我认为不应该模拟ListObservableCollectionDateTime这样的基类型(即使可能)。它们是可靠的,不太可能改变。只需在测试中使用ObservableCollection,而不用尝试重新实现它的计数增加功能。您总是可以进行基于状态的验证:

var items = new ObservableCollection<int>();
// Do stuff
Assert.That(items.Count, Is.EqualTo(5));

如果您使用从ObservableCollection<Int32>继承的自定义类型Foo,那么您还可以实现一些易于模拟的IFoo接口:

public class Foo : ObservableCollection<Int32>, IFoo