Мне нужно создать несколько тестов для пользовательских ролей в веб-приложении.Чтобы свести описание к минимуму, один из тестов включает проверку, отображается ли пункт меню для пользователя.
Для этого теста я использую таблицу с именем UserRoles, которая выглядит следующим образом:
sUserName bDoesntHaveMenuX
User1 1
User2 0
User3 1
bDoesntHaveMenuX имеет тип bit.
У меня есть класс, производный от ValidationRule, который проверяет, присутствует ли определенный текст на странице, на основе выражения XPath, чтобы найти узел, где искать текст,Открытые свойства этого класса:
string XPathExpression
string Text
bool FailIfFound
Последнее диктует, должно ли правило не работать, если текст найден или не найден.
В тесте я добавил источник данных дляТаблица, упомянутая в начале, называется DS.Для интересующего меня запроса я добавил новый экземпляр класса правил проверки со следующими значениями:
Text=MenuX
XPathExpression=//div[@id='menu']//td
FailIfFound={{DS.UserRoles.bDoesntHaveMenuX}}
К сожалению, это не работает.Кажется, причина в том, что процесс связывания данных создает переменную контекста DS.UserRoles.bDoesntHaveMenuX со значением «False» или «True».Значением является строка, поэтому привязка приводит к ошибке приведения.
Насколько я могу судить, у меня есть следующие варианты:
- Изменить правило проверки, чтобы принимать строкидля FailIfFound.Недопустимый параметр по двум причинам: это хак, и то же правило используется в других местах.
- Создайте новое правило проверки, которое будет использовать вышеупомянутое, и реализуйте FailIfFound в качестве строки.Мне тоже это не нравится по той же причине, что и выше.Это хак.
- Создайте тестовый код и выполните правильное приведение перед передачей данных в правило проверки.Мне это не нравится, потому что я предпочитаю, чтобы тест был закодирован только в том случае, если другого пути нет.
Что подводит меня к вопросу.Есть ли другой способ?
Спасибо.