Ich habe eine Rails Engine in der normalen Mode erstellt, RSpec installiert und generiert ein Gerüst für ein Modell, aber ich kann keine Routing-Spezifikationen erhalten.
Hier ist ein Beispiel:
%Vor%Ich führe die Beispiele in der Dummy-App so aus:
%Vor%Die Engine ist in der Dummy-App korrekt installiert:
%Vor%Und ich kann in die Dummy-App gehen und die Konsole hochfahren und diesen Weg ganz gut finden:
%Vor%Es gibt eine Diskrepanz zwischen der Dummy-App und RSpec, und ich kann nicht herausfinden, was es ist. Ich habe mehrere Artikel gefunden, die behaupten, dieses Problem zu lösen, aber keiner von ihnen hat geholfen, und einige von ihnen sind spezifisch für Rails 3.1:
Hat jemand dieses Problem in Rails 3.2 / RSpec 2.10 gelöst?
Update (2013-10-31)
RSpec 2.14 jetzt unterstützt vollständig Motorrouten :
%Vor%Fügen Sie es allen Routing-Spezifikationen hinzu:
%Vor%Die beste Lösung, die ich bisher gefunden habe, ist das explizite Festlegen des Routensatzes, der während der Tests verwendet wird:
%Vor%Dann musste ich meine Routing-Beispiele neu schreiben, um den Namensraum wegzulassen:
%Vor%Das scheint ein bisschen wie ein Hack zu sein, aber es macht Sinn. Ich teste nicht, ob Rails eine Engine auf einem bestimmten Pfad bereitstellen kann. Ich teste nur, dass mein Motor seine eigenen Routen korrekt eingerichtet hat. Trotzdem würde ich eine Instanzvariable lieber nicht überschreiben müssen, um dies zu ermöglichen.
Hier sind noch ein paar gute Themen zu diesem Thema:
Ich denke, Sie müssen RSpec explizit mitteilen, dass Sie eine namespaced Rails-Route verwenden. ZB,
%Vor%Außerdem sollten Sie das Schreiben von RSpec-Controller-Tests wie diesem nicht vereinfachen,
%Vor%Hier ist ein Link für RSpec-Controller, die ich gemacht habe, Ссылка
Tags und Links rspec2 ruby-on-rails-3.2 rails-engines rspec-rails