RSpec:如何测试是否使用正确数量的参数调用:new

RSpec:如何测试是否使用正确数量的参数调用:new,rspec,Rspec,我想测试类的initialize方法是否需要两个参数。我有以下资料: class Game end ... require 'game' describe Game do describe '#initialize' do it 'requires two players' do expect(Game).to respond_to(:new).with(2).arguments end end end 出于某种原因,上面的代码通过了,即使尝试使用2个参数

我想测试类的initialize方法是否需要两个参数。我有以下资料:

class Game
end
...
require 'game'

describe Game do
  describe '#initialize' do
    it 'requires two players' do
      expect(Game).to respond_to(:new).with(2).arguments
    end
  end
end
出于某种原因,上面的代码通过了,即使尝试使用2个参数在pry中初始化
游戏
,也会抛出我预期的
ArgumentError
。如何才能正确编写上述测试?

这就是我要做的

require 'game'

describe Game do
  let(:player1) { Player.new(name: 'Player 1') }
  let(:player2) { Player.new(name: 'Player 2') }

  describe '#initialize' do
    context 'raises ArgumentError when' do
      let(:player3) { Player.new(name: 'Player 3') }

      it "is not called with exactly 2 players" do
        expect { Game.new(player1) }.to raise_error(ArgumentError)
        expect { Game.new(player1, player2, player3) }.to raise_error(ArgumentError)

        expect { Game.new(player1, player2) }.not_to raise_error
      end  
    end
  end
end
你显然需要一个一流的球员

class Player
  attr_reader :name

  def initialize(name:)
    @name = name
  end
end

谢谢@Marko,我希望RSpec有一些内置的语法来解决这个问题,但也许它不存在。。。。