我有一些用来测试模块的Rspec测试。该模块被我的Rails应用程序中的许多型号使用。为了将测试时间保持在最低限度,我希望在测试模块时避免加载Rails。
问题是有一些包含救援的方法,这些救援提到了Rails调试器。当Rspec在Rails中看到大写的'r‘时,它会遇到麻烦,因为它认为它是一个未初始化的常量。
我希望如果我把日志信息封装到它自己的方法中,我就可以避免这个问题。这是我想出来的。但是如果我沿着这条路走下去,我将需要存根救援代码或或log_info方法。是那么回事吗?我该怎么做呢?我应该清除哪一个呢?
def download_robots_file(page)
file = Net::HTTP.get(URI("#{page}robots.txt"))
rescue StandardError => ex
log_info('robot_file', ex)
end
....
private
def log_info(problem, exception_issue)
Rails.logger.debug("Couldn't download #{problem}: " + exception_issue.inspect)
end
发布于 2012-08-16 11:44:57
您可以添加到存根链方法,您想要存根。
Rails.stub_chain(:logger).and_return(mocked_logger_instance)
Un-stub结尾为:
Rails.unstub(:logger)
所有学分将通过以下链接How to rspec mock ruby rails logger class发送给mister
https://stackoverflow.com/questions/11969478
复制相似问题