0

我正在为我构建的 Ruby tic tac toe 游戏编写 RSpec 测试。测试在最初失败后通过了,所以这是一个好兆头。这是 computer_spec.rb 文件:

require 'computer'
require 'board'

describe "the computer selects the winning move as spot 3" do
  it "when spots 1 and 2 are chosen" do
    computer = Computer.new
    board = Board.new
    computer.winning_move(board, [1,2]).should eq(3)
  end
end

现在,由于它是一个 computer_spec.rb 文件,它实际上应该只在该文件的顶部有require 'computer' 。我的意思是确定它有效,但我想变得非常擅长 RSpec,并以最好和最简洁的方式做事。

自然,Computer Class 在winning_move 方法中使用board.rb。wins_move 传递了两个参数,board 和 computer。BOARD 本身是一个散列(tile 是键,X 或 O 是值)。这是一些代码,但您可以在此处查看 board.rb:https ://github.com/DavidPardy/ttt_v2/blob/master/lib/board.rb

我试图将哈希硬编码到computer_spec.rb,但不行。最常见的错误之一是“未初始化的常量板”,这是有道理的……我认为。

那么解决这个问题的最好方法是在这个文件的顶部只需要“计算机”吗?

任何意见表示赞赏,谢谢。

编辑:我刚刚使用了 spec_helper.rb,不知道为什么我从一开始就没有使用它。

4

1 回答 1

0

一些选项:

  • 将 Computer 和 Board 类定义放在一个文件中并包含该文件。

  • 将板添加为自动加载的文件

  • 添加 ActiveSupport::Dependencies.autoload_paths << "#{config.root}/somefolder"

于 2013-04-05T03:32:57.240 回答