0

私は現在Rhino-mocksを学んでおり、ユニットテストとモックの境界線を混乱させていると思います。以下の例では、Get()をテストしようとしている読み取り専用のCount()プロパティがあります(説明のみを目的とした非常に工夫された例)。Assert.AreEqualのコメントが示すように、Count()プロパティの結果は3であるはずなのに2です。

私の質問は、Rhino-mocksを使用して実際にオブジェクト(この場合は読み取り専用プロパティ)をスタブし、モックIProductオブジェクトのget_Count()プロパティのロジックをテストできますか?

    public interface IProduct
    {
        int Count { get; }
    }

    public class Product : IProduct
    {
        private int count;
        public int Count
        {
            get { return count + 1; }
        }
    }

    public class TestFixture
    {
        [NUnit.Framework.Test]
        public void TestProduct()
        {
            MockRepository mock = new MockRepository();
            IProduct product = mock.Stub<IProduct>();

            product.Stub(p => p.Count).Return(2);
            mock.ReplayAll();

            Assert.AreEqual(3, product.Count); //Fails - result from product.Count is 2
            mock.VerifyAll();
        }
    }
4

1 に答える 1

2

テストしようとしているオブジェクトをモックアウトしています。これは根本的に間違っています。テストしようとしているオブジェクトの DEPENDENCIES をモック (またはスタブ) したいのです。

上記の場合、モックはまったく使用しません。

AAA 構文に関する私のコメントも参照してください。

于 2011-01-21T16:58:54.097 に答える