Mag*_*pie 33 c# asp.net-mvc moq
我正在尝试测试一些依赖于ControllerContext.RouteData中的Values属性的应用程序逻辑.
到目前为止我有
// Arrange
var httpContextMock = new Mock<HttpContextBase>(MockBehavior.Loose);
var controllerMock = new Mock<ControllerBase>(MockBehavior.Loose);
var routeDataMock = new Mock<RouteData>();
var wantedRouteValues = new Dictionary<string, string>();
wantedRouteValues.Add("key1", "value1");
var routeValues = new RouteValueDictionary(wantedRouteValues);
routeDataMock.SetupGet(r => r.Values).Returns(routeValues); <=== Fails here
var controllerContext = new ControllerContext(httpContextMock.Object, routeDataMock.Object, controllerMock.Object);
Run Code Online (Sandbox Code Playgroud)
单元测试失败:System.ArgumentException:不可覆盖的成员上的设置无效:r => r.Values
由于构造函数是RouteData(RouteBase,IRouteHandler),因此创建伪RouteData也不起作用.
这里重要的类是抽象类RouteBase,它有GetRouteData(HttpContextBase)方法,它返回一个RouteData实例,我试图伪造的类.把我带到圈子里!
对此的任何帮助都是最受欢迎的.
tva*_*son 62
RouteData还有一个不带参数的构造函数.只需创建一个并将值添加到您想要的值.当你可以创建一个时,不需要嘲笑它.
var routeData = new RouteData();
routeData.Values.Add( "key1", "value1" );
var controllerContext = new ControllerContext(httpContextMock.Object, routeData, controllerMock.Object);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14069 次 |
| 最近记录: |