我在模拟界面时非常有经验,这是我第一次尝试模拟Generic Abstract类。我正在更新以前的开发人员已经处理过的代码,并且已经辞职了。我正在尝试使用MOQ模拟一个通用抽象类,代码如下
public abstract class AbstractView<TView, TTranslation, TProperty, TPropertyView> : TranslatableEntity<TTranslation>, IView
where TView : IView, new()
where TTranslation : ITranslation
where TProperty : BaseEntity, IProp
where TPropertyView : AbstractPropertyView<TView,TProperty>, new()
{
我在StackOverflow中看到过这个,但是当我尝试它时它似乎无法正常工作
当我尝试上面的那个时,我得到错误的类型参数数量错误。
我问过这里的一些人,他们也没有任何线索。任何人都可以教我如何模拟这样一个抽象类?
提前致谢
答案 0 :(得分:0)
嗯,你没有显示你真正的模拟代码,但你可以嘲笑这个类很好。
这是一个例子。给出以下接口/类:
public interface IView {}
class DummyView : IView { }
public interface ITranslation { }
public interface IProp { }
public class BaseEntity : IProp {}
public class AbstractPropertyView<TView,TProperty> { }
public abstract class TranslatableEntity<TTranslation> { }
public abstract class AbstractView<TView, TTranslation, TProperty, TPropertyView> : TranslatableEntity<TTranslation>, IView
where TView : IView, new()
where TTranslation : ITranslation
where TProperty : BaseEntity, IProp
where TPropertyView : AbstractPropertyView<TView,TProperty>, new()
{
public abstract int Foo();
}
您可以将其模拟为简单(?):
var mock = new Mock<AbstractView<DummyView, ITranslation, BaseEntity, AbstractPropertyView<DummyView, BaseEntity>>>();
mock.Setup(m => m.Foo()).Returns(5);