【发布时间】:2017-06-15 20:43:33
【问题描述】:
我正在关注solution 以验证 Rails 应用程序中服务类中的 url。测试返回 false,但在控制台中,当我使用 Ruby 的 URI 类解析给定的 url 时,不会引发错误。我不认为我的代码中有任何拼写错误 - 有什么建议我哪里出错了吗?
class UrlService
attr_accessor :uri
def initialize(uri)
@uri = uri
end
def valid?
begin
uri = URI.parse(uri)
!uri.host.nil? && uri.kind_of?(URI::HTTP)
rescue URI::InvalidURIError
false
end
end
end
测试
require "rails_helper"
RSpec.describe UrlService do
subject {described_class.new(url)}
describe "#valid?" do
context "success" do
let(:url) { "https://www.google.com/" }
it "returns true" do
expect(subject.valid?).to be_truthy
end
end
end
end
【问题讨论】:
-
附带说明 - 如果您打算在模型中使用它,将其写为 custom validator 而不是服务是有意义的。
标签: ruby-on-rails ruby