我有一个 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>>());
现在,“那个”调用会引发 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;