我已经创建了一些抽象方法的抽象基类叫做:验证,如果一个抽象的方法是使用最小起订量
public abstract class MyBaseClass<T> where T: class, IEntity
{
public T Load(long id)
{
//if in cache continue with cached value
//else make use of protected abstract LoadFromContext
}
protected abstract T LoadFromContext(long id);
}
现在我要检查,如果LoadFromContext我们调用,但我得到一个错误:System.ArgumentException :成员FakeCacheRepository.LoadFromContext不存在
单元测试Moq的Setup其中FakeCacheRepository是派生型的MyBaseClass:
Mock<FakeCacheRepository> personRepoMock = new Mock<FakeCacheRepository>();
personRepoMock.Setup(x => x.Load(14)).Returns(new Person() { ID = 14, Name = "Developer14" });
personRepoMock.Protected().Setup("LoadFromContext");
var person = new FakeCacheRepository().Load(14);
Assert.AreEqual("Developer14", person.Name);
personRepoMock.Protected().Verify("LoadFromContext", Times.Once());
我做错了什么,是否有任何关于moq的好教程,以便更好地理解,而不必去Google提出每个问题。
嗨汤姆,不想在这里开始讨论如何构建代码。在代码应该被提取时,我应该如何继承代码,哪里可以找到指导原则?这里讨论的基类正式名称为“CachedRepositoryBase”...所有缓存内容都放在这里。只有连接特定的东西放在继承的类中,仍然是缓存的存储库类(如此继承)。目前这似乎对我而言是合法的。 –
我没有任何特定的发送链接,但Google的一句“编写可测试代码”的短语引出了不少可能引起您关注的文章。 – TomDoesCode