私はApressのProASP.NETMVC 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
ビューに渡されたオブジェクトのプロパティにアクセスできるように機能しませんか?