тестирование контроллера с использованием MOQ-репозитория - PullRequest
2 голосов
/ 26 октября 2010

Я очень новичок в издевательстве. В приведенном ниже примере я использую Moq и пытаюсь создать _companyRepository. Однако второй тест имеет нулевую ссылку. т. е. компания не создана.

Assert.AreEqual(viewModel.Company.Name, "MyCompany");

Думаю, мне здесь чего-то не хватает.

    [TestClass]
    public class ErrorControllerTest
    {

        private Mock<ICompanyRepository> _companyRepository;

        public ErrorController CreateErrorController()
        {
            _companyRepository = new Mock<ICompanyRepository>();
            _companyRepository.Setup(c => c.Get(2)).Returns(new Company {Name = "MyCompany"});
            return new ErrorController(_companyRepository.Object);
        }


        [TestMethod]
        public void Test()
        {

            var controller = CreateErrorController();
            controller.Test(""); // action is called
            var viewModel = (ErrorViewModel)controller.ViewData.Model;
            Assert.IsInstanceOfType(controller.ViewData.Model, typeof(ErrorViewModel));
            Assert.AreEqual(viewModel.Company.Name, "MyCompany");
        }
     }

Контроллер

public class ErrorController : Controller
{

   private readonly ICompanyRepository _companyRepository;

    public ErrorController(ICompanyRepository companyRepository) 
    {
        _companyRepository = companyRepository;
    }


    public ActionResult Test()
    {
        var company = _companyRepository.Get(2);
        var viewModel = new ErrorViewModel
        {
            Company = company
        };

        return View(viewModel);
    }

}

1 Ответ

0 голосов
/ 26 октября 2010

это работает .... Думаю, я не все скомпилировал.Очень тупой

То, что я делаю это правильно.Ценю любые комментарии.

...