2016-11-16 2 views
0

Ich habe post '/foo/bar', to: 'api/v1/things#bar' in meinem routes.rb.Rspec nicht meine Route

Lauf rails routes kehrt

foo_bar POST /foo/bar(.:format) api/v1/things#bar 

Ich versuche es mit post '/foo/bar' zu testen, aber ich

No route matches {:action=>"/foo/bar", :controller=>"api/v1/things"} 

Ich weiß, dass das Problem etwas albern ist, aber ich bin nicht in der Lage, es zu sehen . Irgendwelche Ideen?

+0

Welche Art von Test ist das? Controller-Test? –

+0

Ja, ein Contoroller-Test. – alexandernst

Antwort

2

Routing ist keine Sache, wenn Sie Controller-Spezifikationen ausführen.

Verwendung:

post 'bar' 

Sehr wahrscheinlich gibt describe API::V1:Things do um diesen Test ist, sagt dies RSpec, welcher Controller zu verwenden.

1

In einem Controller-Test sollten Sie den tatsächlichen Aktionsnamen bar verwenden. Routing-Details sind keine Angelegenheit des Controllers. Dies ist ein fokussierter Test, testen Sie also nur die Steuerungslogik.

Integration Tests auf der anderen Seite ist ein anderes Biest. Sie testen per Definition den gesamten Stack (deshalb werden sie auch "End-to-End-Tests" genannt). Sie sollten in der Lage sein, /foo/bar in einer Feature-Spezifikation zu veröffentlichen, da die Anforderung über den Router erfolgt.

Verwandte Themen