我目前正在学习 Rhino-mocks,并认为我混淆了单元测试和模拟之间的界限。在下面的示例中,我有一个只读的 Count() 属性,我正在尝试对其测试 Get() (一个非常人为的示例,仅用于讨论目的)。正如 Assert.AreEqual 上的注释所示,Count() 属性的结果是 2,而它应该是 3。
我的问题是我可以使用 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();
}
}