私はコントローラ用のユニットテストを書いています。私たちは以下の簡単なコントローラを持っています。剣道UIを使用したMVC4でのユニットテストコントローラアクション
public class ClientController : Controller
{
[HttpPost]
public ActionResult Create(Client client, [DataSourceRequest] DataSourceRequest request)
{
if (ModelState.IsValid)
{
clientRepo.InsertClient(client);
}
return Json(new[] {client}.ToDataSourceResult(request, ModelState));
}
}
このためのユニットテストは、以下の通りである:
[Test]
public void Create()
{
// Arrange
clientController.ModelState.Clear();
// Act
JsonResult json = clientController.Create(this.clientDto, this.dataSourceRequest) as JsonResult;
// Assert
Assert.IsNotNull(json);
}
コントローラコンテキストは、次のコードで偽装されている:ときCreate
コントローラのアクションの試行例外が発生
public class FakeControllerContext : ControllerContext
{
HttpContextBase context = new FakeHttpContext();
public override HttpContextBase HttpContext
{
get
{
return context;
}
set
{
context = value;
}
}
}
public class FakeHttpContext : HttpContextBase
{
public HttpRequestBase request = new FakeHttpRequest();
public HttpResponseBase response = new FakeHttpResponse();
public override HttpRequestBase Request
{
get { return request; }
}
public override HttpResponseBase Response
{
get { return response; }
}
}
public class FakeHttpRequest : HttpRequestBase
{
}
public class FakeHttpResponse : HttpResponseBase
{
}
}
ToDataSourceResult
メソッドに電話をかけてください。
System.EntryPointNotFoundException : Entry point was not found.
デバッグ(標準コンテキストで実行されていない場合)にModelState内部辞書ユニットテストに空であることを示しています。 ModelState
がToDataSourceResult
メソッドから削除された場合、テストは成功します。どんな助けも大歓迎です。
多くのおかげさまで...決してこの結論には到着しませんでした。 – aponzani
この回答は私の一日を救った! – vcRobe