Das ist etwas, das mich in den letzten Tagen verrückt gemacht hat. Ich habe eine Aktion, mit der authentifizierte Benutzer Assets auf die Site hochladen können. Ich weiß, dass die Controller-Aktion korrekt ist, da ich den Prozess manuell durchlaufen kann, aber ich möchte es mit rspec testen.Testen von authentifizierten Datei-Uploads in merb
Ich muss den request
Helfer verwenden, damit ich eine authentifizierte Sitzung wiederverwenden kann, die eine :given
für diese Reihe von Tests ist.
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
Wenn ich innerhalb der Spezifikation Stopp-es alle schön aber funktioniert, wenn ich die spec laufen und versuchen, den Weg in die Controller-Aktion durch den Debugger das ich für den Zugriff auf:
e file[:tempfile].path
NoMethodError Exception: undefined method `path' for "#[Spec::Mocks::Mock:0x3fda2a4736c0 @name=\"file\"]":String
Meine Vermutung ist, dass die stub!(:path)
nicht für das festgelegt wird, was auch immer Mock-Objekt durch die Anfrage macht.
Die Frage ist: Gehe ich den richtigen Weg für das Testen von Datei-Uploads und wenn nicht, was ist ein anderer Weg?