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 を上手に使いこなし、最善かつ最も簡潔な方法で物事を進めたいと思っています。

当然のことながら、コンピューター クラスは、wining_move メソッドでboard.rbを使用します。wining_move には、board と computer の 2 つの引数が渡されます。BOARD 自体はハッシュです (タイルがキーで、X または O が値です)。少しのコードですが、ここで board.rb を見ることができます: https://github.com/DavidPardy/ttt_v2/blob/master/lib/board.rb

ハッシュを computer_spec.rb にハードコーディングしようとしましたが、うまくいきませんでした。より一般的なエラーの 1 つは、「初期化されていない定数ボード」です。これは理にかなっていると思います。

では、このファイルの先頭に「computer」を必要とするだけの最善の方法は何でしょうか?

ご意見をお待ちしております。

編集: spec_helper.rb を使用しましたが、最初からそれを使用していなかった理由がわかりません。

4

1 に答える 1

0

いくつかのオプション:

  • コンピューターとボードのクラス定義を 1 つのファイルに入れ、そのファイルをインクルードします。

  • 自動読み込みファイルとしてボードを追加

  • ActiveSupport::Dependencies.autoload_paths << "#{config.root}/somefolder" を追加します

于 2013-04-05T03:32:57.240 に答える