У меня есть тестовый пример NUnit, который утверждает тип, установленный в новом свойстве ViewBag
контроллера MVC.
Итак, тело действия имеет
using (IRepository repository = _repositoryProvider.GetRepository())
{
ViewBag.Articles = repository.Get<Articles>()
return View();
}
и пытаюсь проверить это так
var mockProvider = new Mock<IRepositoryProvider>();
var mockRepository = new Mock<IRepository>();
mockProvider.Setup(m => m.GetRepository()).Returns(mockRepository.Object);
mockRepository.Setup(m => m.Get<Articles>()).Returns(It.IsAny<IEnumerable<Articles>>);
var homeController = new HomeController(mockProvider.Object);
var viewResult = homeController.Index();
Assert.That(homeController.ViewBag.Articles, Is.TypeOf<IEnumerable<Articles>>());
Теперь вызов "That" вызывает исключение RuntimeBinderException
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException :
The call is ambiguous between the following methods or properties:
NUnit.Framework.Assert.That(NUnit.Framework.Constraints.ActualValueDelegate,
NUnit.Framework.Constraints.IResolveConstraint) and
NUnit.Framework.Assert.That(NUnit.Framework.TestDelegate,
NUnit.Framework.Constraints.IResolveConstraint)
Кто-нибудь видел исключение для пользовательских динамических объектов? У меня есть другие тестовые случаи, когда строки установлены в ViewBag, и они не попадают в это исключение
Я также пытался "так динамично", как в, но это тоже не помогло
ViewBag.Articles = repository.Get<Articles>() as dynamic;