我不确定为什么我的get list方法会在测试中返回0条记录,但是当我运行应用程序时,它会拉回5条记录。
[TestMethod]
public void TestHasListOfSurveys()
{
var mockRepository = new Mock<ISurveyListRepository>();
var mockModel = new List<SurveyList>();
string testDate = DateTime.Today.AddYears(-1).ToShortDateString();
mockRepository.Setup(x => x.GetSurveyList(testDate)).Returns(mockModel);
var testClass = new SurveyListModel(mockRepository.Object);
var testModel = testClass.GetSurveyList(testDate);
mockRepository.VerifyAll();
Assert.IsTrue(testModel.Count > 0);
}
我究竟做错了什么?
更新
好吧,我想我知道我现在做了什么。因此,如果我将其更改为:
var mockModel = new List<SurveyList>();
mockModel.Add(new SurveyList { SurveyID = 1, SurveyName = "test1" });
mockModel.Add(new SurveyList { SurveyID = 2, SurveyName = "test2" });
mockModel.Add(new SurveyList { SurveyID = 3, SurveyName = "test3" });
那么它将有一个计数并且很好,然后我的模拟对象包含项。
最佳答案
在测试中,ISurveyListRepository
依赖关系已由模拟代替,您的应用程序可能使用其他实现。
var mockModel = new List<SurveyList>();
mockRepository.Setup(x => x.GetSurveyList(testDate)).Returns(mockModel);
这些行使模拟返回空列表,这可能是测试失败的原因。如果您向列表中添加一些项目,则测试将通过。另一方面,应用程序使用实现
ISurveyListRepository
的类。找到该类,您将看到为什么它返回5个项目。关于c# - 使用Moq和Mock对象-我的列表计数始终为0,而不应为0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23374314/