Как делают меня Действия Модульного теста, Не Дразня то использование UpdateModel?

Нет for циклов или if условий с использованием pandas.DataFrame :

import pandas as pd
df=pd.DataFrame.from_dict(listOfDict)
result=df[df['Age']=='10']['name'].tolist()

ВЫХОД

['Joel', 'Rachel']

8
задан Doug Wilson 1 December 2008 в 20:50
поделиться

2 ответа

Я не думаю, что это может быть сделано начиная с TryUpdateModel, который UpdateModel использует, ссылается на ControllerContext, который является пустым при вызове от модульного теста. Я использую RhinoMocks, чтобы дразнить или заблокировать различные компоненты, необходимые контроллеру.

var routeData = new RouteData();
var httpContext = MockRepository.GenerateStub<HttpContextBase>();
FormCollection formParameters = new FormCollection();

EventController controller = new EventController();
ControllerContext controllerContext = 
    MockRepository.GenerateStub<ControllerContext>( httpContext,
                                                    routeData,
                                                    controller );
controller.ControllerContext = controllerContext;

ViewResult result = controller.Create( formParameters ) as ViewResult;

Assert.AreEqual( "Event", result.Values["controller"] );
Assert.AreEqual( "Show", result.Values["action"] );
Assert.AreEqual( 0, result.Values["id"] );

Вот соответствующий бит из источника Controller.cs на www.codeplex.com/aspnet:

protected internal bool TryUpdateModel<TModel>( ... ) where TModel : class
{

     ....

    ModelBindingContext bindingContext =
           new ModelBindingContext( ControllerContext,
                                    valueProvider,
                                    typeof(TModel),
                                    prefix,
                                    () => model,
                                    ModelState,
                                    propertyFilter );

     ...
}
5
ответ дан 5 December 2019 в 20:20
поделиться

Или вы можете создать прокси-сервер данных формы, например

public class CountryEdit {
  public String Name { get; set; }
  public String Iso3166 { get; set; }
}
  • Plus. Простое создание модульных тестов
  • Плюс. Определите белый список обновлений полей из сообщения
  • Plus. Простые правила проверки настройки, легко проверить.
  • Минус. Вы должны переместить дату из прокси в вашу модель

Итак, Controller.Action должен выглядеть, как

public ActionResult Edit(Int32 id, CountryEdit input)
{
  var Country = input.ToDb();
  // Continue your code
}
0
ответ дан 5 December 2019 в 20:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: