将RSpec测试重构为只有一个需要在文件顶部(仅限Ruby,没有Rails)

时间:2013-04-04 16:26:41

标签: ruby rspec refactoring tdd

我正在为我构建的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文件,它应该只有 要求此文件顶部的计算机' 。我的意思是确定它有效,但我希望通过RSpec变得非常好,并以最好和最简洁的方式做事。

当然,计算机类在wins_move方法中使用 board.rb 。 wins_move传递两个参数,板和计算机。 BOARD本身是一个哈希(瓦片是键,X或O是值)。它只是一些代码,但你可以在这里看到board.rb:https://github.com/DavidPardy/ttt_v2/blob/master/lib/board.rb

我尝试将哈希硬编码到computer_spec.rb中,但没有去。其中一个更常见的错误是“未初始化的常量板”,这是有道理的......我认为。

那么最好的解决方法就是要求计算机'在这个文件的顶部?

感谢任何意见,谢谢。

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

1 个答案:

答案 0 :(得分:0)

一些选项:

  • 将计算机和电路板类定义放在一个文件中并包含该文件。

  • 将电路板添加为自动加载文件

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