RSpec:如何测试是否使用正确数量的参数调用:new
我想测试类的initialize方法是否需要两个参数。我有以下资料: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个参数
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有一些内置的语法来解决这个问题,但也许它不存在。。。。