Запретить Visual Studio Web Test от изменения деталей запроса - PullRequest
1 голос
/ 28 марта 2010

У меня есть служба, которая принимает запросы Xmla для служб Analysis Services, часто в самих этих запросах будет строка, содержащая фрагмент, похожий на

{{[Time].[Year].[All]}}

Запись этих запросов работает нормально, но когда я пытаюсь повторно запустить тест, я получаю сообщение об ошибке от организатора теста ...

Запрос не выполнен: возникла исключительная ситуация: отсутствует параметр контекста с именем '[Time]. [Year]. [All]' в WebTestContext

Некоторое время это сбивало с толку, но когда я попросил VS сгенерировать кодированную версию теста, я смог увидеть проблему немного лучше. VS ищет токены '{{' и '}}' и вносит изменения, учитывая, что эти области ссылаются на параметры Context, код выглядит как

this.Context["\n\t[Time].[Year].[All]"].ToString()

Кто-нибудь знает, как инструктировать Visual Studio не выполнять эту операцию замены? Или другой способ обойти эту проблему?

Ответы [ 2 ]

1 голос
/ 04 января 2012

Использование двойных фигурных скобок, например. «{{}}» является избыточным. Вам нужно использовать только один набор скобок, например. «{}» или если этот код генерируется, он также будет работать с пробелами между наборами фигурных скобок, например. "{{}}"

0 голосов
/ 01 июня 2011

Насколько я знаю, поведение подстановки контекста является автоматическим и не управляемым, но есть несколько способов обойти это:

  • Создайте кодированные тесты, а затем отмените действия Visual Studio, например, замените this.Context["\n\t[Time].[Year].[All]"].ToString() на "{{[Time].[Year].[All]}}" везде, где оно появляется. Это довольно ужасно.

  • Поместите строку {{[Time].[Year].[All]}} в параметр контекста и используйте этот параметр контекста вместо необработанной строки. Visual Studio применяет подстановку параметров контекста только один раз, поэтому она оставляет только полученное строковое значение.

  • Третья возможность - изменить все строки xmla {{[foo]}} на [[[foo]]], а затем написать WebTestPlugin или WebTestRequestPlugin, который преобразует [[[foo]]] обратно в {{[foo]}} в PreRequest событие во время выполнения теста. Автоматическая замена происходит перед PreRequest, так что это безопасное время для возврата их в фигурные скобки.

...