小编mar*_*rgo的帖子

RSpec:如何存根方法和方法链

我有一个单例类,许多其他类和控制器可以访问该类来确定行为。如何在测试中设置单例值以便测试行为。下面的示例代码中,Setting 是一个 Singleton 类,它由数据库支持并存储应用程序范围的设置,并且管理员可以更改这些设置。Floodgate 是访问设置的类。

class Setting
  def instance
    @setting ||= new
  end
end

class Floodgate
  def self.whitelist
    Setting.instance.flood_gate_whitelist
  end
end
Run Code Online (Sandbox Code Playgroud)

以下是 Floodgate 的一些测试,需要访问设置数据库值。

describe Floodgate do
  let(:setting) { Class.create(Setting).instance }

describe ".whitelist" do
  it "returns a list of values on the Settings floodgate whitelist" do
    expect(Floodgate.whitelist).to eq 'google'
  end
end

describe ".allow_traffic_source?" do
  it "returns true if traffic source is on the white list" do
    expect(Floodgate.allow_traffic_source?('google')).to eq true
  end

  it "returns false if traffic source is not on the …
Run Code Online (Sandbox Code Playgroud)

singleton rspec ruby-on-rails-4

2
推荐指数
1
解决办法
1352
查看次数

rails使用URI.parse验证url会导致意外结果

我正在按照此解决方案验证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
Run Code Online (Sandbox Code Playgroud)

测试

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
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

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

标签 统计

rspec ×1

ruby ×1

ruby-on-rails ×1

ruby-on-rails-4 ×1

singleton ×1