为了单元测试的目的,我有一个方法mock_request
被覆盖。对于每个请求,我想执行一些代码:
def mock_request(method, url, params={})
case "#{method} #{url}"
when 'post /customers'
# create customer
when %r{post /customers/(.*)/items}
id = $1 # update customer
when %r{post /customers/(.*)}
id = $1 # update customer
else
throw 'Unrecognized request'
end
end
问题是这个case语句变得很长,每个case的行数都在慢慢增加。此外,同时处理多个模型。
我想做的是为每个模型设置单独的文件,并以某种方式将它们包含在此mock_request
方法中。像这样的东西:
# handlers/customers.rb
module RequestHandlers
# post /customers
# post /customers/(.*)
end
# handlers/items.rb
module RequestHandlers
# post /customers/(.*)/items
end
# mock_request.rb
class MockServer
def mock_request(method, url, params={})
handle_request(method, url)
end
end
但是我不确定如何实现这一点。在红宝石中解决这个问题的最佳方法是什么?