Как я могу проверить, что значение параметра является числом в определенном диапазоне - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь написать набор тестов для метода, который отправляет запрос POST с параметром 'target', который должен быть между 0 и 10

Мой класс Ruby:

class ClassName
  before_action :must_have_valid_target

  def create
     target = params[:target]
     . . .
  end 

  def must_have_valid_target
    return if params.key?(:target)
    error_response(422, 'error message')
  end
end 

Мой Rspec

it 'cannot create request with negative target' do
  post(:create, {target: -1})
  assert_response(422) # actual result is: Expected 422, Actual 200
end 

Я пытался:

def must_have_valid_target
  valid = params[:target].between?(0,10)
end

но это не работает. Как я могу проверить, что символ имеет значение между диапазонами, чтобы впоследствии я мог дать правильный ответ?

Это не домашняя работа, я пытаюсь добавить дополнительные тесты в базу кода на своем рабочем месте, но я все еще плохо знаком с RSpec и Ruby.

1 Ответ

0 голосов
/ 10 июня 2019

params[:target] - строка, приведенная к целому числу перед сравнением,

def must_have_valid_target
  params[:target].present? && params[:target].to_i.between?(0,10)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...