Visual Studio 2015: WebTest проверяет ответ с помощью регулярных выражений

Я пытаюсь использовать регулярное выражение для проверки текста ответа в веб-тесте. С классом ValidationRuleFindText у вас есть возможность использовать регулярное выражение для проверки текста ответа из веб-запроса. Пример:

Текст ответа: {"успех":true, "data":"foo bar"}

ValidationRuleFindText validationRule = new ValidationRuleFindText();
validationRule.FindText = @"/(/""success/"":true)/ig";
validationRule.IgnoreCase = true;
validationRule.UseRegularExpression = true;
validationRule.PassIfTextFound = true;
foobarRequest.ValidateResponse += new EventHandler<ValidationEventArgs>    (validationRule3.Validate);

По какой-то причине он не распознает, что validationRule.FindText является регулярным выражением, и он терпит неудачу, потому что буквально не может найти /(/"success/":true)/ig в ответе. Если кто-то знаком с этим, любая помощь будет принята с благодарностью :)


person Joseph Freeman    schedule 25.07.2016    source источник
comment
Вы уверены, что он использует способ определения регулярных выражений JavaScript? (/‹регулярное выражение›/‹флаги›). Попробуйте убрать косую черту и флаги (ig) в конце.   -  person Wazner    schedule 25.07.2016
comment
Хм, я не уверен, я попробую удалить косые черты и дам вам знать, если это сработает. В данный момент провожу нагрузочный тест. Спасибо за ваше предложение!!!   -  person Joseph Freeman    schedule 25.07.2016


Ответы (1)


Это очень легко сделать с помощью Visual Studio. Возьмите любой файл .webtest, который можно использовать в качестве файла песочницы. Добавьте правило проверки текста с правильными настройками, а затем запустите команду «сгенерировать код». Правильный код проверки будет виден в сгенерированном файле .cs.

Для строки примера в вопросе строка поиска {"success":true, "data":"foo bar"} генерирует строку ниже. Другие строки правил проверки такие же, как в вопросе.

validationRule1.FindText = "{\"success\":true, \"data\":\"foo bar\"}";

Наконец, в этой строке поиска нет ничего, что требовало бы регулярного выражения. Правило проверки, не основанное на регулярном выражении, было бы достаточно.


Строка в вопросе имеет validationRule.FindText = @"/(/""success/"":true)/ig";, что похоже на то, как регулярные выражения используются в некоторых других языках. Окружающие символы / и ig в конце не должны использоваться. Их функциональность достигается другими средствами.

person AdrianHHH    schedule 25.07.2016
comment
Спасибо!! Для ввода :) Теперь у меня работает проверка. Я ценю вашу помощь! - person Joseph Freeman; 26.07.2016