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.

Était-ce utile?

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
scroll top