<context>
Описание
Переопределяет значения переменных $client и $session в тест-кейсах.
Атрибуты
var определяет переменную, для которой будет установлено значение. Возможные значения атрибута: client и session.
Тело
JSON-объект.
Переопределение значений полей в рамках сессии
- Если для полей еще не устанавливались значения, будут использоваться те, которые вы задаете.
- Если для каких-то полей вы уже устанавливали значения, то они будут перезаписаны.
При переопределении значений также учитываются значения, заданные в сценарии.
Например, если в сценарии указано:
state: Password
a: Введите ваш пароль, чтобы функции бота стали доступны.
state: GetPassword
q: qwerty
script:
$client.account = $client.account || {};
$client.account.password = "qwerty";
a: Такой пароль небезопасный.
А в тест-кейсе вы указываете:
<context var="client">
{
"name": "Ваня",
"account": {"username": "vanya2000"}
}
</context>
А затем:
<context var="client">
{
"name": "Иван"
}
</context>
То в итоге значения полей для объекта $client будут такими:
{
"name": "Иван",
"account": {"username": "vanya2000", "password": "qwerty"}
}
Пример
Рассмотрим сценарий:
theme: /
state: Start
q!: $regex</start>
a: Давай поиграем. Я напишу цитату, а ты попробуешь отгадать автора. Согласен?
state: Quote
q!: (да | хорош* | ~согласный | ок)
script:
# Выполняется HTTP-запрос к API.
var response = $http.get("http://api.forismatic.com/api/1.0/?method=getQuote&format=json&lang=ru");
# Данные из ответа сохраняются в объект $session.
$session.quoteText = response.data.quoteText;
$session.quoteAuthor = response.data.quoteAuthor;
# Происходит проверка на наличие информации об авторе в ответе.
if: $session.quoteAuthor !== ""
go!: /Quote/Who
else:
a: Я нашел хорошую цитату, но не знаю автора. А цитата вот: {{$session.quoteText}}
a: Давай еще раз попробуем?
state: Who
a: Кто автор цитаты: {{$session.quoteText}}?
state: GetAuthor
q!: *
# Происходит проверка, совпадает ли ответ пользователя с автором цитаты из $session.quoteAuthor.
if: $session.quoteAuthor === $parseTree.text
a: Ого! Ты прав!
else:
a: Попробуй еще раз.
Тест-кейс для проверки ответа пользователя может выглядеть так:
<test>
<test-case id="AnswerCheck">
<!-- Проверка, совпадает ли ответ пользователя с автором цитаты -->
<context var="session">
{
"quoteAuthor": "Галилео Галилей"
}
</context>
<q>Коперник</q>
<a>Попробуй еще раз.</a>
<q>Галилео Галилей</q>
<a>Ого! Ты прав!</a>
</test-case>
</test>
Более подробный пример использования тега <context> в разделе Тестирование сценария с переменными.