Я хочу войти в реальный метод, используя тестовые данные в качестве входных данных.Moq - Как войти в настоящий метод?
Когда вызывается GetSurveyList, он не обращает внимания на дату, которую я даю. Он всегда возвращает все три элемента, которые я вручную добавил в mockModel. Он должен проверять дату и возвращать только те элементы, у которых есть дата, которая равна или больше даты ввода.
Если я вхожу, я только добираюсь до интерфейса. Следующий шаг в вызове должен перейти к коду, который реализует интерфейс, и все же это не так. Является ли это стандартным поведением Мока? Я думал, это позволит вам войти?
Вот мой код:
[TestMethod]
public void TestHasListOfSurveys()
{
var mockRepository = new Mock<ISurveyListRepository>();
var mockModel = new List<SurveyList>();
mockModel.Add(new SurveyList { SurveyID = 1, SurveyName = "test1", DeliveryDate = DateTime.Parse("1/1/2014") });
mockModel.Add(new SurveyList { SurveyID = 2, SurveyName = "test2", DeliveryDate = DateTime.Parse("6/1/2014") });
mockModel.Add(new SurveyList { SurveyID = 3, SurveyName = "test3", DeliveryDate = DateTime.Parse("12/1/2014") });
string testDate = DateTime.Today.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);
}
GetSurveyList из Repository:
класса SurveyListRepository общественности: ISurveyListRepository
public List<SurveyList> GetSurveyList(String deliveryDateAfterInput)
{
List<SurveyList> SurveyLists = new List<SurveyList>();
string error = string.Empty;
using (OrderingEntities db = DierbergsAppLib.Entities.EntityFactory.GetInstance<OrderingEntities>(
new DierbergsAppLib.Entities.EntityFactory.EntityFactoryOptions()
{
EntityNameInConfigFile = "OrderingEntities",
ConnectionStringCacheManager = new DierbergsAppLib.Entities.WebCacheConnectionStringManager()
},
out error))
{
DateTime deliveryDateFilter = Convert.ToDateTime(deliveryDateAfterInput);
var SurveyList = db.uspOrderSurveyListAllStoresGet(deliveryDateFilter);
foreach (uspOrderSurveyListAllStoresGet_Result viewsurvey in SurveyList)
{
// SurveyLists.Add()
}
}
List<SurveyList> all = SurveyLists.OrderBy(x => x.SurveyDueDate).ToList();
return all;
}
GetSurveyList от модели:
общественного класса SurveyListModel
public List<SurveyList> GetSurveyList(String deliveryDateAfterInput)
{
return _repository.GetSurveyList(deliveryDateAfterInput);
}
Пожалуйста, уточните свой вопрос с кодом для 'SurveyListModel.GetSurveyList' –
Можете ли вы объяснить, что должен делать' SurveyListModel', когда вызывается 'GetSurveyList'? Что такое 'testModel', возвращенный этим методом? –
Я добавил GetSurveyList к сообщению. – hyprsleepy