我的 Rails 应用程序使用net sftp gem 连接到第三方服务器并在那里检索文件。问题是,如果我们尝试连续连接太多次,它们会阻止连接。我们的代码每天凌晨 4:00 检索一次文件,因此这通常不是问题。
但是我们确实有代码来测试检索到的文件是否被正确解析,并且当我们连续运行太多次测试时,SFTP 服务器会阻止我们,因此我们团队中的另一个开发人员无法开发另一个需要不再连接到 SFTP 服务器。通常,我们将 SFTP 请求存根,但我们最近发现有人忘记在其中一个测试中添加存根,所以过去几天我们总是收到连接拒绝,因为我们中的另一个人正在尝试修复一些测试并且他们连续多次运行测试套件。
我们的存根看起来像这样:
sftp_start = mock
empty_extract = file_fixture("fixture_csv.csv").read
sftp_start.stubs(:download!).returns(empty_extract)
Net::SFTP.stubs(:start).yields(sftp_start)
所以,问题是,有没有办法在测试环境中阻止 SFTP 连接,所以如果有人忘记添加存根,我们会得到一个错误吗?我知道webmock可以阻止外部请求,但它似乎无法捕获 SFTP 请求。我做了一些谷歌搜索,但没有找到与这个问题相关的任何东西,所以任何建议都会很好!我们正在使用 minitest 来运行我们的测试。