Asp.net mvc 在使用moq的单元测试中,IdependencyResolver始终为空

Asp.net mvc 在使用moq的单元测试中,IdependencyResolver始终为空,asp.net-mvc,unit-testing,moq,Asp.net Mvc,Unit Testing,Moq,我已经在一个mvc项目中实现了ninject,它可以按预期工作,现在我想进行单元测试,但似乎无法让它工作: 控制器: private IDependencyResolver _resolver; public HomeController(IDependencyResolver resolver) { _resolver = resolver; } public ActionResult Index() { var model = _resol

我已经在一个mvc项目中实现了ninject,它可以按预期工作,现在我想进行单元测试,但似乎无法让它工作:

控制器:

 private IDependencyResolver _resolver;

 public HomeController(IDependencyResolver resolver)
 {
        _resolver = resolver;
 }

  public ActionResult Index()
  {
        var model = _resolver.GetService<ISignUpViewModel>();
        return PartialView("Login", model);
  }
private IDependencyResolver\u解析器;
公共家庭控制器(IDependencyResolver解析器)
{
_分解器=分解器;
}
公共行动结果索引()
{
var model=_resolver.GetService();
返回PartialView(“登录”,模型);
}
单元测试

    private IDependencyResolver _resolverMock;

    [TestMethod]
    public void SignUpTest()
    {

        var ctrl = new HomeController(_resolverMock);
        var signUpMock = new Mock<ISignUpViewModel>();

        ctrl.Index();
        ctrl.ViewData.Model = signUpMock;

        //Assert.AreEqual("", "");

    }
private IDependencyResolver\u resolverMock;
[测试方法]
public void SignUpTest()
{
var ctrl=新的HomeController(_resolverMock);
var signUpMock=new Mock();
ctrl.Index();
ctrl.ViewData.Model=signUpMock;
//Assert.AreEqual(“,”);
}
解析程序始终为空

我看了Ninject.MockingKernel.Moq我应该在那里设置解析器吗

知道我哪里出错了吗


感谢您在单元测试中手动创建
HomeController
实例,因此您需要mock
IDependencyResolver
。例如:

var resolverMock = new Mock<IDependencyResolver>();
var ctrl = new HomeController(resolverMock.Object);
....
var resolverMock=new Mock();
var ctrl=新的HomeController(resolverMock.Object);
....

您是否初始化过
\u resolverMock
?它为空的原因是您从未将其设置为非空。我收到错误:无法将类型“Moq.Mock”隐式转换为“System.Web.Mvc.IDependencyResolver”。存在显式转换(是否缺少演员阵容?)很好,现在可以正常工作了。感谢您将其作为resolverMock.object传递。@Tau7 Use moq还可以模拟一些操作,您可以阅读以下文档:快速问题:您在单元测试中使用的每个接口都必须模拟吗?@Tau7这取决于您。您可以设置一些实现接口的类型实例。但我认为使用最小起订量是更好的解决方案。