对我们的代码做了一些更改,现在我需要重新考虑一些单元测试,以确保它们与新代码兼容。我遇到了一个问题。在此:如何使用Rhino mock在测试对象中模拟一个值?
ChannelLoad loader = new ChannelLoad(_customerDbMock, _bulkCopyMock);
loader.Execute(taskId);
现在的“加载器”对象,尝试连接到另一个对象,以得到一个字符串值,而被自动返回的字符串前。所以明显的解决方案是嘲笑该对象为测试返回合适的值。然而,由于各种原因,我不能轻易做到这一点。
理想情况下,我希望能够做到的是获得一个“真正的”(即如代码中指定的)加载器对象,该对象执行“真正的”Execute方法,但具有特定的“模拟”值串。但我真的不知道如何做到这一点 - 即使可能 - 与Rhino Mocks。问题中的字符串属性不是抽象的或任何 - 它是受保护的,它实际上是只读的。这是它的外观里面的“加载”:
protected string DbConnectionString
{
get
{
return _Service.GetLocalDatabase().GetConnectionString(_Service);
}
}
而问题是,测试环境“GetLocalDatabase”什么都不返回。
有人帮我在这里?有没有一种方法可以使用Rhino Mocks来模拟它,或者是我重构代码以使其不依赖外部对象的唯一选项?如果后者,指针也会有所帮助。
干杯, 马特
如果不进行重大重构,我无法做到这一点 - 是否真的是唯一的选择? – 2011-01-24 12:23:04