我目前正在学习Rhino-mocks,并认为我混淆了单元测试和嘲讽之间的界限。在我下面的例子中,我有一个只读的Count()属性,我试图对Get()进行测试(仅供讨论使用的一个非常人为的例子)。正如Assert.AreEqual的注释所示,Count()属性的结果应为3时的结果为0.单元测试getter/setter时,如何使用Rhino-mocks?
我的问题是,我可以使用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();
}
}
如果你刚刚开始嘲笑,不要学习记录/重播methodolgy - 阅读犀牛支持的AAA(arrange-act-assert)语法。 – 2011-01-21 16:54:46