【发布时间】:2015-04-21 21:15:46
【问题描述】:
我有两个实现接口的类,但是这两个类都有一个参数传递给构造函数来确定应用程序需要什么类。当我创建 AvailablityRepoData 的实例时,我正在尝试在 (AvailablityRepoData) 类上测试一个 (GetAvailablity) 方法我收到非虚拟方法的错误。如果有人能指出正确的方向,我将不胜感激。
public interface IAvailablityRepo
{
string GetAvailablity(Availablity availablity);
}
public class AvailablityRepoData: IAvailablityRepo
{
public AvailablityRepoData(string websetting) {
}
public string GetAvailablity(Availablity availablity) {
return "Data";
}
}
public class AvailablityRepoWeb:IAvailablityRepo
{
public AvailablityRepoWeb(string DataSetting) {
}
public string GetAvailablity(Availablity availablity) {
return "Web";
}
}
public class Availablity
{
public virtual string Id {
get;
set;
}
public virtual string Status {
get;
set;
}
}
var a = new Availablity() { Id = "111", Status = "A"};
Mock<IAvailablityRepo> mockRepo = new Mock<IAvailablityRepo>();
Mock<IAvailablityRepo> RepoData = new Mock<IAvailablityRepo>();
RepoData.Setup(x => x.GetAvailablity(It.IsAny<Availablity> ())).Returns("pass");
var result = RepoData.Object.GetAvailablity(a);
【问题讨论】:
-
请正确格式化您的代码。
-
确切的错误是什么?另外,是运行时错误还是编译时错误?
-
运行时错误我不想在 AvailablityRepoData 上创建 Get GetAvailablity 虚拟方法
-
您可以添加整个错误消息吗?从您的代码 sn-p 不能立即清楚出了什么问题。
-
作为旁注:测试目前只是测试起订量是否按预期工作。您正在提供 GetAvailablility 的假实现,并直接检查此假实现是否返回正确的响应。此测试不是测试单行生产代码。
标签: c# asp.net-mvc unit-testing tdd moq