mvc-тестирование asp.net: невозможно получить доступ к объекту внутри действия - PullRequest
0 голосов
/ 14 октября 2010

1001 * имеющий *

public ActionResult Create(CategoryViewModel viewModel)
    {
        if (!ModelState.IsValid)
        {
            return View(viewModel);
        }
        Category category = new Category();
        category.Parent = daoTemplate.FindByID<Category>(viewModel.ParentId);
        category.CopyFrom(viewModel);
        daoTemplate.Save(category);
        return RedirectToAction("Index");
    }

Мне нужно убедиться, что у вновь созданной категории правильный родительский набор. Как я могу это сделать, если у меня нет доступа к объекту категории вне метода?

1 Ответ

2 голосов
/ 14 октября 2010

В конечном счете, предлагаемый вами тест действительно проверяет две вещи:

1) daoTemplate.FindByID<T>() работает как положено

2) Метод Create вызывает метод daoTemplate.FindByID<T>()

Это должны быть два отдельных теста.

Первый тест должен быть частью приспособления DaoTemplate - кроме того, его трудно комментировать, не видя больше исходного кода.

Во-вторых, чтобы убедиться, что действие вызывает ожидаемый метод, вам нужно будет вручную свернуть фиктивный объект или использовать фальшивый каркас.Существует множество популярных макетов для C # (Moq, RhinoMocks, даже почтенный NMock2 - см. Давний вопрос stackoverflow Какую платформу для C # использовать? для начала) и классическое место для началанасмешка - статья Мартина Фаулера " Насмешки - это не заглушки ."

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