将Rspec中描述块的范围设置为方法

时间:2014-06-08 21:31:34

标签: ruby-on-rails ruby rspec

我试图写一些简洁的RSpec测试。测试如下:

require 'spec_helper'

describe Video::Base do
  subject { Video::Base }

  its(:base_uri) { should match(/api\.wistia\.com/) }
  its(:base_uri) { should match(/https/) }

  its(:format) { should == :json }

  describe :default_params do
    its([:api_password]) { should_not be_nil }
  end
end

测试看起来很不错,但describe :default_params失败了。我知道RSpec能够调用its([api_password]),但问题是目标必须是哈希。在此示例中,您看到我正在调用Video::Base类而不是#default_params方法的密钥。如何设置它以its([deafult_params])拨打Video::Base.default_params而不是Video::Base

1 个答案:

答案 0 :(得分:2)

您需要覆盖主题:

describe :default_params do
  subject { Video::Base.default_params }

  its([:api_password]) { should_not be_nil }
end

或者,为了获得更大的灵活性,请使用super

describe :default_params do
  subject { super().default_params }

  its([:api_password]) { should_not be_nil }
end