Le test de RSpec
-
11-10-2019 - |
Question
Comment tester une action de contrôleur qui envoie un fichier?
Si je le fais avec le test de controller.should_receive(:send_file)
échoue avec « modèle manquant » parce que rien ne se rend.
La solution
De recherche sur Google autour, il semble que render
sera également appelé à un moment donné .. mais sans modèle, provoquera une erreur.
La solution semble être de bouchonner dehors ainsi:
controller.stub!(:render)
Autres conseils
Une autre façon qui fonctionne est:
controller.should_receive(:send_file).and_return{controller.render :nothing => true}
Pour moi, cette capture le fait que l'effet secondaire prévu de send_file
est faire en sorte que rien d'autre être rendu. (Bien, il semble certes un peu bancal d'avoir le talon appeler une méthode sur l'objet original.)
Vous pouvez également faire ceci:
result = get ....
result.body.should eq IO.binread(path_to_file)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow