繁体   English   中英

单元测试控制器方法属性

[英]Unit testing controller method property

我正在研究Apress的Pro ASP.NET MVC 4,并试图了解在单元测试特定控制器方法中使用的语法。

给一个类SomeController的控制器方法:

public ViewResult List(int someInt) {

  ViewModel model = new ViewModel {
    ModelObject = new ModelObject {
      ObjectProperty = someInt;
    }
  }

  return View(model);
}

单元测试看起来像这样:

[test method]
Some_Test () {

   //...some code here to set up a mock object named 'mock'

   SomeController target = new SomeController(mock.Object);

   //This next line is where the syntax is confusing me
   int result = ((ViewModel)target.List(1).Model).ModelObject.ObjectProperty;

   Assert.AreEqual(result, 1);
}

这几乎就像ViewResult.Model必须像ViewModel类型一样被“投射”。 我敢肯定这种语法/技术有一个名字,我想了解更多关于这里发生的事情。

是否需要此技术,因为类似以下内容:

 int result = target.List(1).Model.ModelObject.ObjectProperty;

不能访问传递给视图的model对象的属性?

这只是嵌入到方法链中的简单转换。 target.List(int)返回一个ViewResult ViewResult.Model被键入为Object因此可以使用任何模型类型。 必须在测试中将其强制转换为ViewModel类型,以告知编译器Model是什么类型。 等效于:

ViewModel model = (ViewModel)target.List(1).Model;
int result = model.ModelObject.ObjectProperty;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM