RSpec: Comment pourrais-je utiliser le tableau comprennent matcher dans le fait de s'attendre de la syntaxe
- Je utiliser nouveau rspec syntaxe (expect
au lieu de should
) et je voudrais tester si un tableau contient des éléments d'un autre ensemble. Dans l'ancienne syntaxe, il serait:
array1.should include(array2)
Dans la nouvelle syntaxe j'ai essayé d'écrire:
expect(array1).to include(array2)
mais j'ai une erreur (ce qui est très raisonnable):
TypeError: wrong argument type Array (expected Module)
Ensuite, j'ai écrit:
expect(array1).to be_include(array2)
mais c'est moche 😉
Mise à JOUR: et ça ne fonctionne pas: apparemment, il cheks si matrice2 est élément de matrice1 pas si tous les éléments de tableau2 sont inclus dans le tableau1.
Enfin, j'ai écrit:
expect(array1 & array2).to eq(array2)
mais ce n'est pas la plus jolie de la solution. Connaissez-vous mieux?
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de splat les arguments lors de leur passage au tableau de correspondance:
C'est parce que d'habitude liste des littéraux, par exemple:
Cela dit,
expect(array1).to include(array2)
ne doit pas échouer avec une erreur bizarre comme vous l'avez obtenu, et en fait, il travaille et passe dans un exemple comme:not_to include
mais il a soulevé une erreur:expect([1, 2, 3]).not_to include(1)
soulèveRSpec::Expectations::ExpectationNotMetError: expected [1, 2, 3] not to include 1
1
est en fait inclus dans[1,2,3]
, mais vous dites rspec de s'attendre à ce qu'il ne pas l'être. Cela passe:expect([1, 2, 3]).not_to include(4)
.Essayez celui-ci:
Pour tester si une matrice est sous-ensemble d'un autre ensemble de ses perhapse bonne idée de présenter ensemble. Et puis vous pouvez l'écrire comme ça... (Solution utilise La série#sous-ensemble?)