Я очень плохо знаком с TDD, ASP.NET MVC и LinqToSql.
Я пытаюсь написать тесты для своего репозитория, который получает данные из хранимой процедуры с использованием LinqToSql.
Это тестируемый метод хранилища:
public int GetResponseCount(int campaignId)
{
var results = (new MyDBDataContext()).GetResponseCountById(campaignId);
foreach (GetResponseCountByIdResult result in results)
{
return (result.ResponseCount != null) ? result.ResponseCount.Value : 0;
}
return 0;
}
Это код в тесте:
var myDBDataContext = new Mock<MyDBDataContext>();
var result = new Mock<ISingleResult<GetResponseCountByIdResult>>().Object();
myDBDataContext.Setup(x => x.GetResponseCountById(It.IsAny<int>())).Returns(result).Verifiable();
...
...
Есть 2 вопроса:
1) Проверенная процедура возвращает один целочисленный результат. Но мне нужно перебрать ответ от LinqToSql, чтобы получить значение. Что не идеально. Есть ли лучший способ сделать это?
2) Код в тесте не компилируется. Компилятор говорит - Невозвратный член 'Moq.Mock<System.Data.Linq.ISingleResult<GetResponseCountByResult>>.Object' cannot be used like a method.
Как я могу написать тест, чтобы убедиться, что мой метод репозитория вызывает правильный метод в LinqToSql?
Большое спасибо!