Assertions
Exprimez le comportement attendu.
Assertions est une leçon Lua Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Lua Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Lua Academy comprend 4 leçons au total.
Rôle des assertions
Une assertion est au cœur d’un test. Elle énonce un fait qui doit être vrai. Si c’est le cas, le test continue. Sinon, busted enregistre un échec accompagné d’un message utile.
busted utilise la bibliothèque luassert, accessible par l’intermédiaire de la table globale assert.
assert.are.equal(4, 2 + 2)are.equal
assert.are.equal vérifie l’égalité avec l’opérateur ==. Le premier argument est la valeur attendue et le second, la valeur obtenue.
Cela fonctionne pour les nombres, les chaînes et les booléens, mais pour les tables, la comparaison porte sur l’identité et non sur le contenu.
assert.are.equal("hello", greet())
assert.are.equal(10, count)are.same pour les tables
Pour comparer en profondeur le contenu de tables, utilisez assert.are.same. Cette assertion vérifie récursivement que deux tables contiennent des valeurs égales.
Utilisez same pour les structures de données et equal pour les valeurs primitives ou les vérifications d’identité.
assert.are.same({1, 2, 3}, split("1,2,3"))
assert.are.same({x = 1}, point)Valeurs de vérité
assert.is_true et assert.is_false vérifient les valeurs booléennes exactes. assert.is_truthy accepte toute valeur qui n’est ni nil ni false.
Choisissez la variante stricte lorsque vous attendez précisément un résultat booléen.
assert.is_true(user.active)
assert.is_truthy(find("x"))
assert.is_false(list:isEmpty())Vérifications de nil
assert.is_nil vérifie qu’une valeur est nil, tandis que assert.is_not_nil vérifie qu’elle est présente. Ces assertions sont courantes lors de la vérification de recherches.
Elles expriment plus clairement l’intention qu’une comparaison avec nil à l’aide de equal.
assert.is_nil(map["missing"])
assert.is_not_nil(map["found"])Négation avec is_not
La plupart des assertions peuvent être niées en insérant is_not ou en utilisant la forme are_not. Cela exprime qu’une valeur doit être différente.
Par exemple, assert.are_not.equal réussit lorsque les deux valeurs sont différentes.
assert.are_not.equal(1, 2)
assert.is_not_nil(result)Tester les erreurs
Pour vérifier qu’un code déclenche une erreur, placez-le dans une fonction et transmettez celle-ci à assert.has_error. busted appelle la fonction et confirme qu’elle a levé une erreur.
Vous pouvez également vérifier le message d’erreur en transmettant une chaîne attendue comme deuxième argument.
assert.has_error(function()
withdraw(-5)
end, "amount must be positive")has_no.errors
La vérification inverse est assert.has_no.errors. Elle réussit lorsque la fonction enveloppée s’exécute sans lever d’erreur.
C’est utile pour confirmer qu’un appel du parcours nominal ne provoque pas de plantage, même si vous ne vérifiez pas sa valeur de retour.
assert.has_no.errors(function()
parse("valid input")
end)Messages d’échec personnalisés
Vous pouvez joindre un message à la plupart des assertions pour expliquer les échecs. Passez-le comme argument supplémentaire afin que le rapport précise l’attente.
Des messages clairs transforment un échec énigmatique en problème concret à résoudre.
assert.is_true(ok, "login should succeed")Correspondances avec des modificateurs
luassert fournit des modificateurs et des comparateurs pour effectuer des vérifications plus riches. Par exemple, assert.matches teste une chaîne par rapport à un motif Lua.
C’est pratique lorsqu’une vérification d’égalité exacte est trop stricte pour une sortie variable.
assert.matches("%d%d%d%d", get_year())
assert.matches("error", log_line, 1, true)Choisir la bonne assertion
Choisissez l’assertion la plus précise pour améliorer la clarté. Utilisez same pour les tables, equal pour les valeurs primitives, has_error pour les échecs et les vérifications de vérité pour les booléens.
Les assertions précises produisent de meilleurs messages d’échec, ce qui accélère le débogage.
describe("queue", function()
it("dequeues in order", function()
assert.are.same({"a", "b"}, q:drain())
end)
end)Vérification rapide
Testez votre compréhension des assertions de busted.
Récapitulatif
luassert fournit la table assert de busted. Utilisez are.equal pour les valeurs primitives, are.same pour comparer en profondeur des tables, et les vérifications de vérité ou de nil lorsque c’est approprié.
Testez les échecs avec has_error et les réussites avec has_no.errors. Utilisez is_not pour nier une assertion et ajoutez des messages pour obtenir des rapports plus clairs.
Questions Fréquemment Posées
La leçon « Assertions » est-elle gratuite ?
Oui — le texte complet de « Assertions » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Lua Academy, passe à CoddyKit PRO. Le cours Lua Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Assertions » ?
Exprimez le comportement attendu. Tu pratiques Lua Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Lua Academy ?
Aucune expérience préalable n'est requise. Lua Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Assertions » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Lua Academy ?
Oui. Chaque leçon Lua Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.