Отправка JSON в ASP.NET MVC 3.0 RC контроллер и модульное тестирование - PullRequest
2 голосов
/ 05 декабря 2010

В MVC3 3 мы можем отправить запрос на основе JSON на контроллер MVC, и он автоматически свяжет результат.Я ломал голову над тем, как правильно выполнить модульное тестирование, и надеялся, что эксперты здесь могут указать мне правильный путь.

Пример простого сообщения jquery с результатом json можно найти в предварительном просмотре.сообщение в блоге: http://weblogs.asp.net/scottgu/archive/2010/07/27/introducing-asp-net-mvc-3-preview-1.aspx

В mvc 2 я мог бы создать простой модульный тест, подобный этому:

        // setup
        FormCollection formfakey = new FormCollection
        {
            {"address1", "123 test street"},
            {"email", "jon@mail.com"}
        };

        _controller.ValueProvider = formfakey;

        //execute
        var result = _controller.ThemeContent(formfakey) as RedirectToRouteResult;

        // assert
        Assert.AreEqual("index", result.RouteValues["action"]);
        Assert.AreEqual("success", result.RouteValues["controller"]);

Я ожидал, что смогу по сути дублировать этот код с помощью объекта JSON иустановите его в контроллеры ValueProvider.Это не похоже на случай.Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 05 декабря 2010

Обычно ваше действие контроллера должно принимать строго типизированную модель представления:

[HttpPost]
public ActionResult UpdateProduct(Product product)
{
    return View();
}

Таким образом, вы должны протестировать это действие контроллера как любые другие действия контроллера.В этом действии контроллера нет ничего особенного и связанного с JSON:

[TestMethod]
public void SomeTest()
{
    // arrange
    var controller = new HomeController();
    var product = new Product();

    // act
    var actual = controller.UpdateProduct(product);

    // assert
    // TODO:
}

Как вы можете видеть, мы никогда не должны упоминать об этом JSON.Это просто встроенная JsonValueProviderFactory , которая позволяет интерпретировать привязку JSON-запроса к типу .NET, но вам не нужно это проверять.Он уже встроен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...