如何检查参数的值是一定范围内的数字

时间:2019-06-10 16:50:56

标签: ruby rspec

我正在尝试为发送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 :(得分:0)

params[:target]是一个字符串,在比较之前转换为整数,

def must_have_valid_target
  params[:target].present? && params[:target].to_i.between?(0,10)
end