モック/フェイク オブジェクトを使用した単体テストでは、テスト クラスに同じクラスをテストするメソッドが含まれている場合 (したがって、必要なフェイク オブジェクトはすべてのテスト ケースで同じです)。このようなもの:
class FooTests
{
Mock<IBar> mockBar;
Foo fooUnderTest;
[SetUp]
public void Setup()
{
mockBar = new Mock<IBar>();
fooUnderTest = new fooUnderTest(mockBar.Object);
}
[Test]
public void MyTest()
{
//setup mock methods
mockBar.SetUp( ... )
//test
fooUnderTest.TestSomething()
//assert something here
}
}
これにより、各テスト ケースで mockBar と fooUnderTest にコードを複製することが防止されるように思われますが、欠点は、クラス変数の mockBar と fooUnderTest を宣言する必要があることです (または、これは本当に欠点でしょうか?)。特別なセットアップが必要な場合 (たとえば、テストケースで Foo の仮想メソッドの一部をオーバーライドしたい場合)。ベストプラクティスは何ですか?