Как я тестирую HTTP-POST с Moq в ASP.NET?

Вот подход, основанный на программном определении заголовков. Чтобы проиллюстрировать это, мы ограничиваем внимание одним объектом.

Поскольку встроенная функция jq paths игнорирует пути к нулю, и поскольку одно из требований здесь - НЕ игнорировать такие пути, мы начнем с определения некоторых фильтров, аналогичных paths/0 и paths/1:

[ 110]

Далее мы определим функцию для сокращения длинных путей. Вы можете приспособить это к вашим потребностям.

# Input: an array denoting a path; output: a string
def abbreviate: if .[-1]|type == "number" then "\(.[-2]):\(.[-1])" else "\(.[-1])" end;

Наконец, мы собираем все вместе для случая одного объекта, генерируя строку заголовков, за которой следует строка соответствующих значений:

[allpaths(scalars)] as $p
| ($p | map(abbreviate) | @csv),
  ([getpath($p[])] | @csv)

Вывод

Для объекта JSON, о котором идет речь, выходные данные, полученные с помощью описанного выше (с использованием параметра командной строки -r), будут следующими CSV:

"company_number","address_line_1","country","locality","postal_code","premises","region","country_of_residence","month","year","etag","kind","self","name","forename","middle_name","surname","title","nationality","natures_of_control:0","notified_on"
"09626947","Troak Close","England","Christchurch","BH23 3SR","9","Dorset","United Kingdom",11,1979,"7123fb76e4ad7ee7542da210a368baa4c89d5a06","individual-person-with-significant-control","/company/09626947/persons-with-significant-control/individual/FFeqke7T3LvGvX6xmuGqi5SJXAk","Ms Angela Lynette Miller","Angela","Lynette","Miller","Ms","British","significant-influence-or-control","2016-06-06"
5
задан Pure.Krome 5 April 2009 в 13:33
поделиться

1 ответ

Ваш атрибут не будет вызван при выполнении как модульный тест, потому что он обычно вызывается ControllerActionInvoker как часть Mvc "стек". То, что я сделал в случаях как это, должно записать тест, чтобы удостовериться, что корректный атрибут применяется к действию с корректными параметрами. Затем я полагаю, что платформа сделает свое задание правильно.

Выполнение этого требует отражения:

 public void Only_posts_are_allowed_to_my_action()
 {
       var method = typeof(MyController).GetMethod("MyAction");
       var attribute = method.GetCustomAttributes(typeof(AcceptVerbsAttribute),false)
                             .Cast<AcceptVerbsAttribute>()
                             .SingleOrDefault();

       Assert.IsNotNull( attribute );
       Assert.AreEqual( 1, attributes.Count() );
       Assert.IsTrue( attributes.Contains( HttpVerbs.Post ) );
 }
9
ответ дан 14 December 2019 в 01:17
поделиться
Другие вопросы по тегам:

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