Comment tester les méthodes de classe dans RSPEC
J'ai écrit une simple méthode de classe Buy.get_days(string)
et il est en train de le tester avec une autre chaîne de texte intrants. Cependant, je pense que c'est très verbeux.
- Est-il une manière plus concise pour tester les opérations suivantes?
- Est-il un
l'équivalent desubject
pour méthodes qui je peux juste garder en passant
différents paramètres et de vérifier les résultats? - Est-il un moyen pour éviter les inutiles description à chaque
it
?
grâce
describe Buy do
describe '.get_days' do
it 'should get days' do
Buy.get_days('Includes a 1-weeknight stay for up to 4 people')
.should == 1
end
it 'should get days' do
Buy.get_days('Includes a 1-night stay in a King Studio Room with stone fireplace')
.should == 1
end
it 'should get days' do
Buy.get_days('Includes 4 nights/5 days at the Finisterra Hotel for up to two adults and two children (staying in the same room)')
.should == 4
end
end
end
source d'informationauteur lulalala
Vous devez vous connecter pour publier un commentaire.
Cette est intéressante mais peut-être plus obtus façon d'utiliser le "sujet" du bloc avec les méthodes de la Classe.
Edit: Le cassé lien tel que rapporté par la Wayback Archive qui, je suppose, est sensible à ce même problème.
Il n'y a pas un
subject
équivalent pour l'appel d'une méthode, à l'aide deit
est le chemin à parcourir ici. Le problème que je vois avec votre code présenté est qu'il n'a pas vraiment expliquer ce vous sont tests pour. Je voudrais écrire quelque chose de plus comme:Je suis en train de faire des hypothèses sur ce que vous cherchez ici, mais j'espère que l'idée est claire. Ce sera également conduire à beaucoup plus utile d'erreur de sortie lorsqu'un test échoue. Espérons que cette aide!
Apparemment, il y a un
described_class
méthode.https://www.relishapp.com/rspec/rspec-core/docs/metadata/described-class
Je suppose que c'est plus propre que
subject.class
car il n'a pas d'introduire un autre.
appel de méthode, ce qui réduit la lisibilité.En utilisant soit
described_class
ousubject.class
peut être plus SEC que de mentionner la classe de manière explicite dans chaque exemple. Mais personnellement, je pense ne pas avoir la coloration syntaxique qui vient avec de mentionner le nom de la classe explicitement est une sorte de déception, et je pense qu'il réduit la lisibilité, malgré totalement gagnante dans le service maintenabilité.Une question se pose concernant les meilleures pratiques:
Devriez-vous utiliser described_class chaque fois que possible à l'intérieur et à l'extérieur de la
.expect()
méthode, ou seulement dans leexpect()
méthode?Cela pourrait être une vieille question, mais vous pouvez toujours utiliser
subject.class
pour s'en sortir:Une alternative à l'utilisation de
subject
/it
est d'utiliserbefore
/specify
:Ceci va produire une description raisonnable dans de RSpec
-fd
format de sortie: