10

MvcContactsという名前の MVC 4 プロジェクトとMvcContacts.Testという名前の単体テストプロジェクトを含むMvcContactsというソリューションがあります (Visual Studio で [単体テストを有効にする] チェックボックスをオンにすると自動的に作成されます)。

Ninject.MVC NuGet パッケージをMvcContacts (MVC プロジェクト) にインストールしました。

このチュートリアルに従ったところ、エラーなしですべてがセットアップされ、正常に動作するはずです。ただし、私の単体テスト プロジェクトMvcContacts.Testには次のようなエラーがあります。

'MvcContacts.Controllers.HomeController' には、0 引数を取るコンストラクターが含まれていません

これは私のHomeControllerです:

namespace MvcContacts.Controllers
{
    public class HomeController : Controller
    {
        Logging.ILogger _logger;

        public HomeController(Logging.ILogger logger)
        {
            _logger = logger;
        }

        public ActionResult Index()
        {
            ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";

            _logger.LogMessage(ViewBag.Message);

            return View();
        }

        public ActionResult About()
        {
            ViewBag.Message = "Your app description page.";

            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }
    }
}

これは私のHomeControllerTestです:

namespace MvcContacts.Tests.Controllers
{
    [TestClass]
    public class HomeControllerTest
    {
        [TestMethod]
        public void Index()
        {
            // Arrange
            HomeController controller = new HomeController(); // error on this line

            // Act
            ViewResult result = controller.Index() as ViewResult;

            // Assert
            Assert.AreEqual("Modify this template to jump-start your ASP.NET MVC application.", result.ViewBag.Message);
        }

        [TestMethod]
        public void About()
        {
            // Arrange
            HomeController controller = new HomeController(); // error on this line

            // Act
            ViewResult result = controller.About() as ViewResult;

            // Assert
            Assert.IsNotNull(result);
        }

        [TestMethod]
        public void Contact()
        {
            // Arrange
            HomeController controller = new HomeController(); // error on this line

            // Act
            ViewResult result = controller.Contact() as ViewResult;

            // Assert
            Assert.IsNotNull(result);
        }
    }
}

単体テスト プロジェクトを Ninject で動作させるにはどうすればよいですか?

4

1 に答える 1