Эй, все, я полностью потерял это.Указание правильного вызова?
Я нашел фрагмент кода в Интернете, чтобы помочь проверять поля через ajax, когда пользователь вводит в них. Поэтому я пытаюсь написать спецификацию против ее части, и я просто не могу ее передать.
Вот код
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
и вот мой тест до сих пор
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
Я получаю эту ошибку -
1) Spec :: издевается :: MockExpectationError в 'UserController POST validate извлекает пользователя на основе прошлого в нас ername»Mock„ошибки“получил неожиданное сообщение: [] с („имя пользователя“)
Я не могу показаться, чтобы выяснить, как в мире, чтобы издеваться вызов user.errors [поле]. В идеале эта спецификация проверяет счастливый путь, никаких ошибок. Затем я напишу еще раз для подтверждения валидации.