Question

Pour commencer, je suis extrêmement nouveau dans le test de mes livres de cuisine.Je travaille sur des livres de cuisine depuis quelques mois maintenant et je comprends assez bien les choses, mais notre projet a été très laxiste dans l'ajout de tests.J'essaie également de nous inciter à les tester.

Mon test, tel qu'il est actuellement, vérifie qu'un service a démarré.Mon problème est que pour qualifier le test de succès, je dirais vraiment J'aime vérifier, via le fichier journal de démarrage, que le logiciel a franchi ses étapes de démarrage.L'une de ces étapes consiste à contacter un serveur RabbitMQ et à vous inscrire pour écouter sur quatre échanges distincts.Cela prend du temps.

Je cherchais à utiliser ce qui suit :

describe_recipe 'my_cookbook::test' do

  it " testing that the service is running" do
    service('foo').must_be_running
  end

  it " testing that the log file contains We're Up!" do
    file('/var/log/upstart/foo').must_include 'We're Up!'
  end

end

...mais j'obtiens un échec car il tente de vérifier le journal des nouveaux arrivants avant il a même été créé par le service.Même si je pouvais le faire attendre que le fichier soit créé, j'ai vraiment besoin de créer un délai, disons, de 5 secondes, pendant lequel les connexions RabbitMQ seraient établies.

Est-ce que quelqu'un sait comment résoudre ce problème de timing ?

Était-ce utile?

La solution

Bien que je suggère également, comme Sethvargo l'a fait pour moi, d'enquêter sur Test Kitchen, juste au cas où quelqu'un d'autre aurait besoin de pouvoir ajouter des sommeils à ses minitests, cela peut être fait de cette façon :

it "sleeping" do; puts "need to say something here or the sleep will not happen at the right time"; sleep 5; end

Les problèmes un peu hackish et de timing ne devraient jamais être résolus par la mise en veille, mais je ne prétendrai pas savoir pourquoi vous pourriez en avoir besoin ;-)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top