Tag: 模拟犀牛模拟

为什么我不能更改Rhino Mocks存根对象的返回值?

如果这是一个愚蠢的问题,请原谅我,但我在嘲笑方面相当新,并且我正试图解决它。 我有一些unit testing(使用内置的Visual Studio 2010 Professional测试function),它使用方法所需的存根。 我创建了一个存根,并设置了几个属性和方法的默认返回值,一切运行良好。 我有一个静态类来设置存根,这在TestInitialize方法中用于设置存根… public static AppointmentReminderProviderInterface GetMockProvider() { AppointmentReminderProviderInterface provider = MockRepository.GenerateStub(); provider.Stub(p => p.ContactName).Return(MockProviderContactName); provider.Stub(p => p.ContactEmail).Return(MockProviderContactEmail); return provider; } 请注意, MockProviderContactName和MockProviderContactEmail是本地字符串属性,包含提供程序的默认数据。 该单元检查以查看是否按照默认数据进行的操作都可以正常通过。 但是,我现在想测试当其中一个属性包含duff数据时会发生什么。 我以为我可以在存根上设置它,但它不起作用。 测试方法包含以下几行…… _provider.Stub(p => p.ContactEmail).Return(“invalid”); Debug.WriteLine(“Provider email: “); Debug.WriteLine()告诉我,尽管我已将ContactEmail属性设置为返回“invalid”,但它仍然返回默认的电子邮件地址。 这导致我的测试失败,因为我期望它抛出exception,但事实并非如此。 任何人都知道为什么我不能改变这个属性的返回值? 谢谢你的帮助。

模拟数据访问Layer Rhino mock

如何使用Rhino模拟模拟数据访问层我有以下类: public interface IDataAccess { int ExecuteNoneQuery(SqlConnection connection, string storedProcedureName, IEnumerable sqlParameters); } public class DataAccess : IDataAccess { public int ExecuteNoneQuery(SqlConnection connection, string storedProcedureName, IEnumerable sqlParameters) { using (SqlCommand command = connection.CreateCommand()) { // do some stuff return command.ExecuteNonQuery(); } } } public class DbOperation { private IDataAccess _access; public DbOperation(IDataAccess access) { _access […]

RhinoMocks – 模拟一个方法,其返回值随多次调用而改变(即使传递相同的参数)

我正在寻找如何模拟一个方法,它第二次调用时返回一个不同的值。 例如,像这样: public interface IApplicationLifetime { int SecondsSinceStarted {get;} } [Test] public void Expected_mock_behaviour() { IApplicationLifetime mock = MockRepository.GenerateMock(); mock.Expect(m=>m.SecondsSinceStarted).Return(1).Repeat.Once(); mock.Expect(m=>m.SecondsSinceStarted).Return(2).Repeat.Once(); Assert.AreEqual(1, mock.SecondsSinceStarted); Assert.AreEqual(2, mock.SecondsSinceStarted); } 有什么能使这成为可能吗? 除了为实现状态机的getter实现一个sub? 干杯fellas, 亚历克斯