0

我遇到了一个失败的 github 规范,当我正在学习如何编写规范时,我修复了其中两个在最后一个中失败的问题,并附上评论#这个仍然失败。如何让它通过?

class Team
  attr_reader :players
  def initialize
    @players = Players.new
  end
end

class Players
  def initialize
    @players = ["","Some Player",""]
  end
  def size
    @players.size
  end
  def include? player
    raise "player must be a string" unless player.is_a?(String)
    @players.include? player
  end
end

describe "A new team" do

  before(:each) do
    @team = Team.new
  end

  it "should have 3 players (failing example)" do
    @team.should have(3).players
  end

  it "should include some player (failing example)" do
    @team.players.should include("Some Player")
  end

  #THIS ONE IS STILL FAILING
  it "should include 5 (failing example)" do
    @team.players.should include(5)
  end

  it "should have no players"

end
4

1 回答 1

0

我假设目的是修改规范,而不是修改代码以通过规范。

在这种情况下,我们实际上并不期望@team.players包含 5;相反,我们希望它在被问及它是否包含非字符串时引发异常。这可以写成如下:

  it "should raise an exception when asked whether it includes an integer" do
    expect {
      @team.players.should include(5)
    }.to raise_exception
  end

要检查异常类型和消息,请使用raise_exception(RuntimeError, "player must be a string").

您可能应该类似地修改其他两个规范的描述,因为它们不再失败。

于 2012-12-28T18:21:55.787 回答