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 に答える