我正在使用最小起订量进行测试。我将对象上载到它的接口并发现了一个问题。
以下是显示问题的测试。
对象
public interface IVehicle { string Model { get; } } public interface ICar : IVehicle { } public class Golf : ICar { public Golf(string model) { this.Model = model; } public string Model { get; private set; } }
测试失败
[TestMethod] public void InheritanceInterface_Test_WithMoq() { string golfmodel = "gti"; var gti = new Moq.Mock<Golf>(golfmodel).Object; var safeVehicle = gti as IVehicle; var vehicle = (IVehicle)gti; var safeCar = gti as ICar; var car = (ICar)gti; Assert.AreEqual(golfmodel, gti.Model, string.Format(" Model:{0} | Golf Model:{1}", golfmodel, gti.Model)); Assert.AreEqual(gti.Model, safeVehicle.Model, string.Format("Golf Model:{0} | Vehicle Model:{1}", gti.Model, safeVehicle.Model)); Assert.AreEqual(gti.Model, vehicle.Model, string.Format("Golf Model:{0} | Vehicle Model:{1}", gti.Model, vehicle.Model)); Assert.AreEqual(gti.Model, safeCar.Model, string.Format("Golf Model:{0} | Carro Model:{1}", gti.Model, safeCar.Model)); Assert.AreEqual(gti.Model, car.Model, string.Format("Golf Model:{0} | Carro Model:{1}", gti.Model, car.Model)); }
测试通过
[TestMethod] public void InheritanceInterface_Test() { string golfmodel = "gti"; var gti = new Golf(golfmodel); var vehicle = (IVehicle)gti; var car = (ICar)gti; Assert.AreEqual(golfmodel, gti.Model, string.Format(" Model:{0} | Golf Model:{1}", golfmodel, gti.Model)); Assert.AreEqual(gti.Model, vehicle.Model, string.Format("Golf Model:{0} | Vehicle Model:{1}", gti.Model, vehicle.Model)); Assert.AreEqual(gti.Model, car.Model, string.Format("Golf Model:{0} | Carro Model:{1}", gti.Model, car.Model)); }
如何更改它,以便当我将Mock<Golf>.Object
其转换为其中一个接口时,我仍然可以访问该Model
属性?