ROOKがチェスボードの最初の行(x_position = 0)から垂直方向に移動するための有効な移動をテストするためにコードをDRYしたいと思っています。Rook Chess Pieceに対するRSPECテストのDRYing:Rook.valid_move?
ここに私のチャレンジの私の脳のベンダーがあります。次のコードブロックは、x_position(0)から開始してy_position(0..7)を反復し、最後に各x_poisitionを7回繰り返します。
現在の仕様テストコード:
require 'rails_helper'
RSpec.describe Rook, type: :model do
describe "#valid_move?" do
it "returns true if move is valid vertically" do
game = FactoryGirl.create(:game)
rook = FactoryGirl.create(:rook, x_position: 0, y_position: 0, game: game)
(0..7).each {|i| (0..7).each {|j| expect(rook.valid_move?(i,j)).to eq(true)}}
end
アイム何の後に、このコードは、FactoryGirlは(0,0)でルークを開始する代わりに、(0,0)でルークを開始FatroyGirl持つようにループを使用して(Y_POSITIONを反復することであると1..7)、次にx_positionを1だけインクリメントし、(7,7)がテストされるまでy_position(1..7)を繰り返し実行します。
ボード上のあらゆる場所に(0,0)から移動するならば、あなたはテスト私は決して専門家だけど、あなたは位置(0,0)で作品を作成しているように見える
ありがとうBrendon!それは非常に便利です。それはちょっとした瞬間のように思えるが、私は動作(方法)を使って私のテスト内でピースを動かすことを考えるべきであるとは思っていなかった。今はもっと意味をなさない。 – peterbehere