我不确定为什么我的获取列表方法会在我的测试中返回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" });
然后它将有一个计数并且没有问题然后我的模拟对象有项目。
答案 0 :(得分:2)
ISurveyListRepository
依赖项被替换为mock,您的应用程序可能会使用其他实现。
var mockModel = new List<SurveyList>();
mockRepository.Setup(x => x.GetSurveyList(testDate)).Returns(mockModel);
这些行使模拟返回一个空列表,这可能是您的测试失败的原因。如果您将一些项添加到列表中,您的测试将通过。另一方面,应用程序使用实现ISurveyListRepository
的类。找到那个课程,你就会明白为什么它会返回5个项目。
答案 1 :(得分:1)
而不是:
mockRepository.Setup(x => x.GetSurveyList(testDate)).Returns(mockModel);
你应该写一些类似的东西:
mockRepository.Setup(x => x.GetSurveyList(It.IsAny<String>)).Returns(mockModel);
否则,您的模拟将不会被使用。
无论如何,如果你告诉它返回空的mockModel
,你会得到一个空列表。