Раздел содержит пример тестирования сценария смартапа с подключенным слот-филлингом.
Сценарий со слот-филлингом
Пример сценария:
require: slotfilling/slotFilling.sc
module = sys.zb-common
theme: /
state: Start
q: $regex</start>
a: Начнем!
state:
intent!: /Погода
a: Погода в {{$parseTree._City}} на {{$parseTree._Date.value}}
state: CatchAll
event: noMatch
a: noMatch
Интент /Погода
реагирует на запрос прогноза погоды. Слоты заполнены следующим образом:
Где @City
— пользовательская сущность, которая содержит все города, доступные для прогноза погоды.
Поведение сценария при разных запросах:
- «Погода на завтра в Москве»: слоты заполнены, смартап предоставит ответ.
- «Погода на завтра»: слот
City
не заполнен, смартап задаст уточняющие вопросы. После подходящего ответа, сценарий заполнит слоты, а смартап даст ответ. - «Погода в Москве»: слот
Date
не заполнен, смартап задаст уточняющие вопросы. После подходящего ответа, сценарий заполнит слоты, а смартап даст ответ.
Тестирование
Пример теста, который требуется добавить в папку папка_проекта/test
:
<test>
<test-case>
<q>/start</q>
<a>Начнем!</a>
<q>Прогноз погоды</q>
<a>В каком городе?</a>
<q>В Москве</q>
<a>На какую дату?</a>
<q>На 11 декабря 2019</q>
<a>Погода в Санкт-Петербург на 2019-12-11T00:00:00</a>
</test-case>
</test>
Тестовый сценарий проверяет случай, когда слоты не заполнены. Поэтому после <q>Прогноз погоды</q>
следуют уточняющие вопросы. После того, как все слоты заполнены, сценарий выходит из слот-филлинга.
При написании тестов для сценария со слот-филлингом, учитывайте различные ситуации. Например, когда один слот заполнен, но последующие требуют заполнения.