Rails test en métal / Rack avec RSpec?
-
20-09-2019 - |
Question
Dire que j'ai une classe de métal nommé Aperçu. Comment puis-je tester avec RSpec?
Lorsque je tente:
require 'spec_helper'
describe Preview do
it "should return the posted content" do
post "/preview", :content => "*title*"
response.body.should == "*title*"
end
end
Je reçois:
undefined method `post' for #<ActiveSupport::TestCase::Subclass_1:0x1058b3098>
Il semble que RSpec ne charge pas la méthode :post
si le test est pas explicitement un contrôleur. J'ai essayé de préciser :type => :controller
en vain.
La solution
rspec a des spécifications d'intégration que les tests rails d'enveloppe d'intégration (qui passent par rack). Il suffit de mettre cette spécification dans ./spec/integration/preview_spec.rb
.
Autres conseils
Je pense qu'il est préférable de tester avec support / test
De nos jours (rspec rails 2.2.0 et rails 3) vous pouvez réaliser qu'utiliser Demande Specs :
Selon le fichier readme :
Demande specs vivent dans SPEC / demandes
[...]
Demande de spécifications mélange comportement à partir des tests d'intégration de Rails. Voir la documentation pour ActionDispatch :: Intégration :: Runner pour plus d'informations.