我有以下合同,它在运行时获取注入的属性:
public interface IBroker
{
IDriver Driver { get; }
}
public interface IDriver
{
void Save();
}
public class FileDriver : IDriver { }
public class SqlDriver : IDriver { }
我正在一次性准备我的模拟,因为测试适应度非常大,并且我正在通过以下方式准备我的经纪人的两个版本:
var mockFileBroker = new Mock<IBroker>();
mockFileBroker.Setup(x => x.Driver).Returns(new FileDriver());
var mockSqlBroker = new Mock<IBroker>();
mockSqlBroker.Setup(x => x.Driver).Returns(new SqlDriver());
问题是,当我调查属性Driver时,两个模拟的类型始终为 SqlDriver ......所以看起来Moq总是使用最新注册来解决合同 IDriver ......我能做些什么来避免这种行为?