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