У меня есть простой API-интерфейс restful rails, настроенный для подачи ответов json, у меня есть модель line.rb, где у меня есть следующие проверки.
validates :title, :presence => true, :length => {:minimum => 3, :maximum => 40},
:appropriate_title => {:message => "cannot have . and /"}
validates :department, :presence => true
validates :owner, :presence => true
validates :account, :presence => true
validate :unique_inputs
validates :title, :uniqueness => {
:scope => :account,
:message => 'is already taken for this account',
:case_sensitive => false }
В моей спецификации у меня есть следующий набор
it "with invalid attributes" do
post"#{url}/#{account.name}.json", :api_key => application.key, :line => {:department => "Survey"}
--some assertions --
body = JSON.parse(last_response.body)
body.should eql({"error"=>{"message"=>"[\"Title can't be blank\", \"Title is too short (minimum is 3 characters)\",]"}})
end
Как вы можете видеть, поскольку я не добавляю заголовок в строку, это должно было вызвать ошибку проверки и удовлетворить мое утверждение. Однако я получаю одну и ту же ошибку проверки дважды.
{"error"=>{
"message"=>"[\"Title can't be blank\", \"Title is too short (minimum is 3 characters)\", \"Title can't be blank\", \"Title is too short (minimum is 3 characters)\"]"
}}
Это действительно странно, так как в режиме разработки я не получаю эту ошибку проверки дважды. Если вы сомневаетесь, что я что-то не так делаю в своем контроллере, то вот что я имею в своем контроллере
@line = @current_user.lines.new(params[:line])
if @line.save
respond_with(@line)
else
render :json => {:error => {:message => @line.errors.full_messages}}
end
Я не могу понять, является ли это ошибкой в тесте стойки или я делаю что-то не так.