在单元测试getter / setter时如何使用Rhino-mocks?

时间:2011-01-21 16:45:09

标签: unit-testing mocking rhino-mocks stub

我正在学习Rhino-mocks,并认为我混淆了单元测试和模拟之间的界限。在我下面的例子中,我有一个readonly Count()属性,我试图测试Get()on(一个非常人为的例子仅供讨论)。正如Assert.AreEqual上的注释所示,当它应该是3时,Count()属性的结果是2。

我的问题是我可以使用Rhino-mocks实际存根对象(在本例中是readonly属性)并测试模拟IProduct对象的get_Count()属性的逻辑吗? p>

    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();
        }
    }

1 个答案:

答案 0 :(得分:2)

您正在嘲笑您要测试的对象。这基本上是不正确的 - 你想在你想要测试的对象上模拟(或存根)DEPENDENCIES。

在上面显示的情况下,你根本不会使用模拟。

另见我对AAA语法的评论。