Jus*_*ony 3 c# unit-testing moq mocking observablecollection
我有以下几点:
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
}
Run Code Online (Sandbox Code Playgroud)
然而,Add与Count特别是indexer[]不覆写投放。我唯一的办法Addfoo是Add在我的 foo 类中创建该调用等吗?
我不认为你应该嘲笑等基本类型为List,ObservableCollection或DateTime(即使它是可能的)。它们是可靠的,不太可能改变。只需ObservableCollection在您的测试中使用,而不是尝试重新实现它的计数增加功能。您始终可以进行基于状态的验证:
var items = new ObservableCollection<int>();
// Do stuff
Assert.That(items.Count, Is.EqualTo(5));
Run Code Online (Sandbox Code Playgroud)
如果您使用Foo继承自的自定义类型,ObservableCollection<Int32>您还可以实现一些IFoo易于模拟的接口:
public class Foo : ObservableCollection<Int32>, IFoo
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1923 次 |
| 最近记录: |