1

RSpec 中是否有任何匹配器来检查一个类是否用参数实例化?

就像是it { is_expected.to respond_to(:initialize).with(1).argument }

谢谢!

4

2 回答 2

3

您作为示例给出的respond_to匹配器存在,具有您给出的确切语法。

但是,您需要测试.new方法,而不是.initialize方法,因为.initialize它是私有的。

class X
  def initialize(an_arg)
  end
end

describe X do
  describe '.new'
    it "takes one argument" do
      expect(X).to respond_to(:new).with(1).argument
    end
  end
end
于 2016-04-25T15:07:31.230 回答
0

我不是 100% 确定这是否是您要问的?默认情况下,如果类需要参数并且您实例化不正确,它将抛出 ArgumentError。

require 'rspec'

class Test
  def initialize(var)
  end
end

RSpec.describe do
  describe do
    it do
      expect(Test).to receive(:new).with('testing')
      Test.new('test')
    end
  end
end

或者,您可以attr_reader在您的论点上使用并比较instance_variables.

于 2016-04-25T15:01:00.533 回答