MVC4のリリースバージョンで何かが変更されたため、単体テストからアクション結果をテストしたときに、カスタムactionresultのExecuteResultメソッドが呼び出されないようです。
これは、MVC3および以前のバージョンのMVC4で機能する非常に工夫された例です。単体テストから実行した場合、実行結果が「実行」されることはありません。ここで何が欠けていますか?他の誰かがこの振る舞いを見ますか?
アクション結果
public class SomeActionResult : ActionResult
{
public override void ExecuteResult(ControllerContext context)
{
if (context == null)
{
throw new ArgumentNullException("null context");
}
var view = new ViewResult {ViewName = "index"};
view.ExecuteResult(context);
}
}
コントローラのアクション
[HttpPost]
public ActionResult Index(string something)
{
return new SomeActionResult();
}
ユニットテスト(MVCContribを使用)
[Test]
public void ShouldWork_but_doesnt_in_mvc4()
{
var controller = new HomeController();
var result = controller.Index("test");
result.AssertViewRendered();
}