如何模拟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
}
然而,Add
和Count
,尤其是indexer[]
是不可替代的。我唯一的追索权是在我的foo类中创建调用Add
的Addfoo
吗?
我认为不应该模拟List
、ObservableCollection
或DateTime
这样的基类型(即使可能)。它们是可靠的,不太可能改变。只需在测试中使用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