C'est quelque chose qui m'a rendu fou ces derniers jours. J'ai une action qui permet aux utilisateurs authentifiés de télécharger des éléments sur le site. Je sais que l'action du contrôleur est correcte car je peux exécuter le processus manuellement mais je veux le tester en utilisant rspec.Tester des téléchargements de fichiers authentifiés dans merb
Je dois utiliser l'assistant request
pour pouvoir réutiliser une session authentifiée :given
pour cet ensemble de tests.
it "should allow authenticated file uploads" do
file = File.open(a_valid_file)
mock_file = mock("file")
mock_file.stub!(:path).and_return(file.path)
request(resource(:assets), :method => "POST",
:params => { :file =>
{:tempfile => mock_file, :filename => File.basename(file.path)} }
)
end
Si je point d'arrêt dans la spécification tout fonctionne bien, mais quand je lance la spécification et essayer d'accéder au chemin de l'action du contrôleur par le débogueur je reçois ceci:
e file[:tempfile].path
NoMethodError Exception: undefined method `path' for "#[Spec::Mocks::Mock:0x3fda2a4736c0 @name=\"file\"]":String
Je pense est que le stub!(:path)
n'est pas défini pour l'objet fictif qui le fait via la requête.
La question est: est-ce que je vais dans le bon sens pour tester les téléchargements de fichiers et si ce n'est pas ce qui est un autre moyen?