Ruby 微型测试:如何测试方法

Ruby 微型测试:如何测试方法,ruby,sinatra,minitest,Ruby,Sinatra,Minitest,我试图在代码中测试该方法,但第二个测试返回错误未定义的局部变量或方法“params” 测试方法的正确方法是什么?或者我是否需要更改main.rb的设置方式 代码: 测试: 如果get请求中没有传递任何参数,请尝试: get '/', :index => '1' t由于在调用get'/'时有一个默认的params映射设置,因此第一个测试有效。但是当您直接调用该方法时,params是nil,这就是为什么会出现错误。这里最好的方法是将您需要的数据发送到您的方法。比如: def get_prod

我试图在代码中测试该方法,但第二个测试返回错误
未定义的局部变量或方法“params”

测试方法的正确方法是什么?或者我是否需要更改
main.rb的设置方式

代码:

测试:


如果get请求中没有传递任何参数,请尝试:

get '/', :index => '1'

t由于在调用
get'/'
时有一个默认的
params
映射设置,因此第一个测试有效。但是当您直接调用该方法时,params
nil
,这就是为什么会出现错误。这里最好的方法是将您需要的数据发送到您的方法。比如:

def get_products_of_all_ints_except_at_index index
  @array = [1, 7, 3, 4]
  @total = 1
  @array.delete_at(index)
  @array.each do |i|
    @total *= i
  end
end

get '/' do
  get_products_of_all_ints_except_at_index params[:index].to_i
  erb :home
end
在请求中查找内容通常在代码的最外层进行。那么您的业务代码也将获得更高的可测试性

这应该会有所帮助:所有模拟请求方法都有相同的参数签名:get'/path',params={},rack_env={}
get '/', :index => '1'
def get_products_of_all_ints_except_at_index index
  @array = [1, 7, 3, 4]
  @total = 1
  @array.delete_at(index)
  @array.each do |i|
    @total *= i
  end
end

get '/' do
  get_products_of_all_ints_except_at_index params[:index].to_i
  erb :home
end