scenario() déclare un test de votre bot, depuis un fichier *.test.ts de src/, et chapterjs test le lance contre un Discord en mémoire. Tout ce qui est sur cette page s’importe depuis chapterjs/test.
src/checks/hello.test.ts
src/checks/hello.ts
Comment tester un bot, ce qui est vérifié sans scénario et ce qu’a le serveur de test est dans le guide. Cette page liste ce qui existe.
scenario()
*.test.ts de src/ : chapterjs test le lance contre un Discord en mémoire, où le bot est dans un serveur avec quelques personnes.
bot est le bot dans son serveur de test : bot.use() lance une commande, bot.click() appuie sur un bouton, bot.say() envoie un message en tant que quelqu’un, et ce qui revient dit ce que le bot a répondu.
Un fichier peut exporter plusieurs scénarios, dans une liste aussi. Le libellé est ce que montre le rapport : il ne peut pas être vide, et 120 caractères est le maximum.
ScenarioDeclaration
Ce que renvoiescenario() : une déclaration que le lanceur trouve dans les exports d’un fichier.
Ce que le fichier a donné à
scenario(), pas encore vérifié.TestBot
Le bot du projet, qui tourne dans un Discord en mémoire : un serveur, quelques personnes, et tout ce que fait le bot gardé là où le test peut le lire.Une personne sans droit particulier : qui fait les choses quand personne n’est nommé.
Chaque requête que le bot a envoyée à Discord jusqu’ici.
member()
role()
channel()
#general existe.
use()
{ on: message }, { on: member } ; un menu de message s’utilise dans le salon de son message). Se résout une fois que le bot a répondu.
options est typé depuis les options de la commande (OptionInputsOf) : un texte, un nombre, true ou false, l’un des choices, un TestMember pour une option user, un TestRole pour une option role, un TestChannel pour une option channel, un TestFile pour une option attachment. Il peut être omis quand la commande n’en exige aucune. Ce que Discord ne laisserait pas une personne envoyer (une option obligatoire manquante, un nombre hors de sa plage, un texte trop long, une valeur qui n’est pas un des choix) fait échouer le scénario avant que le bot n’en entende parler.
click()
reply.button('Confirmer')) est cliqué sur ce message, comme le ferait une personne.
select()
values sont des textes pour un menu de textes (les valeurs de ses options), des personnes, des rôles ou des salons pour les autres ; les min et max du menu sont appliqués.
submit()
fields est typé depuis les champs du formulaire (FieldInputsOf) : un texte pour un champ text, une liste de valeurs d’options pour un select ou checkboxes, une valeur d’option pour un radio, true ou false pour un checkbox, des personnes, rôles ou salons pour les autres, des fichiers pour un champ files. Un champ omis reste vide ; un champ obligatoire omis fait échouer le scénario, comme l’application Discord refuserait d’envoyer le formulaire.
suggest()
say()
react()
join()
leave()
run()
settle()
waitForMessage()…) reste en attente, et use(), say(), click()… se résolvent pendant ce temps.
endWaits()
waitForMessage(), waitForClick()…) comme si son temps était écoulé : le temps ne passe pas dans le serveur de test. Se résout une fois que le bot l’a traité.
TestWhere
Qui fait quelque chose, et où.Pour un bouton ou un menu : le message sur lequel il est. Par défaut : un message du bot.
TestMemberOptions
Comment créer une personne pour un test.TestRoleOptions
TestChannelOptions
TestFile
Un fichier que quelqu’un joint à une commande ou à un formulaire.TestReply
Ce que le bot a répondu à une commande, un bouton, un menu ou un formulaire. Il a chaque vérification deTestAssertions, et :
Le message avec lequel le bot a répondu (ou qu’il a changé), ou
null sans message.Ses menus déroulants, dans l’ordre.
isDeferred()
updatesMessage()
opensForm()
changesNothing()
button()
menu()
TestAssertions
Ce qui se vérifie d’un message ou d’une réponse. Chaque vérification lance uneTestFailure avec une phrase en clair quand elle échoue, et renvoie ce qu’elle a vérifié sinon, pour enchaîner.
says()
text (ou lui correspond).
saysExactly()
text.
isEphemeral()
isPublic()
hasButton()
hasEmbed()
hasNoEmbed()
hasNoComponent()
TestMessage
Un message du serveur de test. Il a chaque vérification deTestAssertions, et :
Ses menus déroulants, dans l’ordre.
button()
menu()
TestMember
Une personne du serveur de test.Les messages que le bot a envoyés à la personne en privé, du plus ancien au plus récent.
can()
hasRole()
TestRole
Un rôle du serveur de test.TestChannel
Un salon du serveur de test, un fil, ou une conversation privée.Chaque message que tout le monde y voit, du plus ancien au plus récent (les supprimés et les éphémères mis à part).
allows()
TestButton
Un bouton sur un message envoyé par le bot.TestMenu
Un menu déroulant sur un message envoyé par le bot.TestForm
Un formulaire que le bot a ouvert.TestSuggestion
Une suggestion que le bot a faite pendant que quelqu’un tapait dans une option.Types
OptionInputsOf<Options>: les options d’une commande telles qu’un test les remplit. Une option obligatoire ne peut pas être omise.FieldInputsOf<Fields>: les champs d’un formulaire tels qu’un test les remplit : un champ omis reste vide.SelectInput: ce qu’un test choisit dans un menu : des textes, ou des personnes, rôles et salons.TestMenuTarget<Type>: ce sur quoi s’utilise une commande de menu dans un test :{ on }, unTestMemberpour un menu'user', unTestMessagepour un menu'message'.ButtonTarget: un bouton, tel qu’un test le nomme : la déclaration, une instance, ou un bouton trouvé sur un message (reply.button('Confirmer')).SelectTarget: un menu, de la même façon (reply.menu()).FormTarget<Fields>: un formulaire, de la même façon (reply.form).TestChannelType:'text' | 'announcement' | 'voice' | 'category' | 'forum'.TestFailure: une attente d’un test que le bot n’a pas satisfaite. Ce que lance chaque vérification, avec une phrase en clair : le rapport l’affiche avec la ligne du scénario.