Hey alle, ich bin auf diesem einen völlig verloren.Einen manuellen Anruf auf gültig setzen?
Ich habe ein Code-Snippet online gefunden, um Felder mithilfe von Ajax zu validieren, während der Benutzer in sie eintippt. Also versuche ich eine Spezifikation gegen einen Teil davon zu schreiben und ich kann es einfach nicht durchgehen lassen.
Hier ist der Code
def validate
field = params[:field]
user = User.new(field => params[:value])
output = ""
user.valid?
if user.errors[field] != nil
if user.errors[field].class == String
output = "#{field.titleize} #{user.errors[field]}"
else
output = "#{field.titleize} #{user.errors[field].to_sentence}"
end
end
render :text => output
end
und hier ist mein Test so weit
describe "POST validate" do
it "retrieves the user based on the past in username" do
mock_errors ||= mock("errors")
mock_errors.stub!(:[]).and_return(nil)
User.should_receive(:new).with({'username'=>"UserName"}).and_return(mock_user)
mock_user.should_receive(:valid?).and_return(true)
mock_errors.should_receive(:[]).with("username").and_return(nil)
put :validate, :field=>'username', :value=>'UserName'
response.should == ""
end
end
ich diesen Fehler -
1) Spec :: Mocks :: MockExpectationError in 'UsersController POST validate ruft den Benutzer basierend auf der Vergangenheit in uns ab ername‘Mock 'Fehler' erhielten unerwartete Nachricht: [] mit ("username")
ich nicht scheinen, um herauszufinden kann, wie in der Welt den Ruf zu user.errors zu verspotten [field]. Idealerweise testet diese Spezifikation den glücklichen Pfad, keine Fehler. Ich schreibe dann einen anderen für einen Validierungsfehler.