相关疑难解决方法(0)

RSpec:stubbing Kernel :: sleep?

有没有办法在rspec场景中存根Kernel.sleep?

ruby rspec

38
推荐指数
3
解决办法
1万
查看次数

如何rspec模拟open-uri?

我有这个简单的代码,我发送http请求并读取所有响应.这是我的rails代码

open("http://stackoverflow.com/questions/ask")
Run Code Online (Sandbox Code Playgroud)

如何为这行代码编写规范.我没有选择使用mocha和webmock.我只能使用Rpsec的模拟框架.

我试图使用这个声明

OpenURI.stub!(:open_uri).should_receive(:open).with("http://stackoverflow.com/questions/ask")
Run Code Online (Sandbox Code Playgroud)

但我一直收到这个错误

RSpec::Mocks::MockExpectationError: (#<RSpec::Mocks::MessageExpectation:0xd1a7914>).open("http://stackoverflow.com/questions/ask")
expected: 1 time
received: 0 times
Run Code Online (Sandbox Code Playgroud)

rspec-rails

15
推荐指数
1
解决办法
5818
查看次数

如何在测试环境中通过 URL 访问 ActiveStorage 对象?

给定具有 ActiveStorage 附件的模型

class MyObject
  has_one_attached :avatar
end
Run Code Online (Sandbox Code Playgroud)

在开发环境中,我能够将头像检索为 StringIO 对象。

obj = MyObject.new( { valid params } )
file = File.open( Rails.root.join( "spec/support/images/test_image.jpg" ))
obj.avatar.attach( io: file, filename: "test_image.jpg" )
obj.save

version = obj.avatar.variant( resize: '200x200>').processed
version_url = Rails.application.routes.url_helpers.url_for( version )
download = open(version_url)
download.class 
=> StringIO
Run Code Online (Sandbox Code Playgroud)

当我尝试在测试环境中做同样的思考时,open(version_url)返回

Errno::ECONNREFUSED Exception: Failed to open TCP connection to localhost:3000 (Connection refused - connect(2) for "localhost" port 3000)
Run Code Online (Sandbox Code Playgroud)

有没有人在测试中成功下载过 activestorage 附件?我应该如何配置测试环境来实现这一点?

我的测试环境已经有了

config.active_storage.service = :test
Rails.application.routes.default_url_options = {host: "localhost:3000"}
Run Code Online (Sandbox Code Playgroud)

我忽略了什么? …

ruby-on-rails rails-activestorage

3
推荐指数
1
解决办法
2352
查看次数