2011-03-30 46 views
2

我试图让我的脚湿与asp.net mvc3和单元测试。ASP.NET MVC单元测试与存储库模式

我已经创建了一个使用存储库模式的模型。这里的接口:

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控制器......”下面的错误:

的最佳重载的方法匹配 “MvcApplication1.Controllers.ExtensionController。 ExtensionController(MvcApplication1.Models.IExtensionRepository)” 有一些无效参数

和:

参数1:不能从 转换“Moq.Mock” 到 “MvcApplication1.Models.IExtensionRepository”

我知道我错过了船的地方,但我还没有一个线索到哪里...有什么想法?

回答

8

更改此:

var controller = new ExtensionController(repos); 

这样:

var controller = new ExtensionController(repos.Object); 

PS:我知道这是个,但是这起订量设计的方式。

+0

做到了!感谢您对菜鸟错误的帮助。 – seanicus 2011-03-30 19:35:01