Tôi đang trong quá trình viết một số kiểm tra đơn vị cho bộ điều khiển của chúng tôi. Chúng tôi có bộ điều khiển đơn giản sau đây.Kiểm tra đơn vị Hoạt động điều khiển trong MVC4 với giao diện người dùng Kendo
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));
}
}
Các đơn vị kiểm tra việc này là như sau:
[Test]
public void Create()
{
// Arrange
clientController.ModelState.Clear();
// Act
JsonResult json = clientController.Create(this.clientDto, this.dataSourceRequest) as JsonResult;
// Assert
Assert.IsNotNull(json);
}
Và bối cảnh điều khiển được làm giả với đoạn mã sau:
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
{
}
}
Trường hợp ngoại lệ xảy ra khi những nỗ lực hành động Create
điều khiển để gọi phương thức ToDataSourceResult
.
System.EntryPointNotFoundException : Entry point was not found.
Gỡ lỗi cho thấy từ điển nội bộ ModelState trống trong thử nghiệm đơn vị (chứ không phải khi chạy trong ngữ cảnh chuẩn). Nếu ModelState
bị xóa khỏi phương thức ToDataSourceResult
thì thử nghiệm sẽ thành công. Bất kỳ sự giúp đỡ nào cũng được đánh giá cao.
Rất cám ơn ... không bao giờ tự mình đi đến kết luận này. – aponzani
Câu trả lời này đã lưu lại ngày của tôi! – vcRobe