Я пытаюсь намочить ноги с помощью asp.net mvc3 и модульного тестирования.
Я создал модель, которая использует шаблон хранилища. Вот интерфейс:
public interface IExtensionRepository
{
IList<Extensions> ListAll();
}
Вот хранилище:
public class ExtensionRepository : IExtensionRepository
{
private ExtensionsLSDataContext _dataContext;
public ExtensionRepository()
{
_dataContext = new ExtensionsLSDataContext();
}
public IList<Extensions> ListAll()
{
var extensions = from ext in _dataContext.Extensions
select ext;
return extensions.ToList();
}
}
Вот контроллер:
public class ExtensionController : Controller
{
private IExtensionRepository _repository;
public ExtensionController()
: this(new ExtensionRepository())
{
}
public ExtensionController(IExtensionRepository repository)
{
_repository = repository;
}
}
Кажется, что страницы работают так, как задумано. Однако с моим модульным тестом дела идут плохо. Он находится в другом проекте в том же решении. Я использую Moq и NUnit. Вот мой тест:
[Test]
public void Test_Extension_Index_Views()
{
Mock<Extensions> extension = new Mock<Extensions>();
List<Extensions> extList = new List<Extensions>();
extension.Object.Extension = "5307";
extension.Object.Extension_ID = 1;
extension.Object.ExtensionGroup_ID = 1;
extList.Add(extension.Object);
Mock<IExtensionRepository> repos = new Mock<IExtensionRepository>();
repos.Setup(er => er.ListAll()).Returns(extList);
var controller = new ExtensionController(repos);
var result = controller.Index() as ViewResult;
Assert.AreEqual("Index", result.ViewName);
}
Я получаю следующие ошибки для строки, начинающейся с «var controller ...»:
Лучший перегруженный метод соответствует
'MvcApplication1.Controllers.ExtensionController.ExtensionController (MvcApplication1.Models.IExtensionRepository)'
имеет недопустимые аргументы
И
Аргумент 1: невозможно преобразовать из
'Moq.Mock'
в
'MvcApplication1.Models.IExtensionRepository'
Я знаю, что где-то пропустил лодку, но понятия не имею, где ... какие-нибудь идеи?