3

私は次のものを持っています:

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特にCountindexer[]オーバーライドできません。私の唯一の手段は、私のfooクラスなどでAddfooその呼び出しを作成することですか?Add

4

1 に答える 1

5

ListObservableCollection、またはDateTime(可能であっても)などの基本型をモックする必要はないと思います。それらは信頼性が高く、変更される可能性はほとんどありません。ObservableCollectionカウントを増やす機能を再実装しようとする代わりに、テストで使用するだけです。状態ベースの検証はいつでも実行できます。

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

Foo継承されたカスタム型を使用している場合は、簡単にモックできるインターフェイスをObservableCollection<Int32>実装することもできます。IFoo

public class Foo : ObservableCollection<Int32>, IFoo
于 2013-06-20T16:15:35.420 に答える