干燥我的 RSPEC 测试车棋子:Rook.valid_move?
DRYing my RSPEC Test for a Rook Chess Piece: Rook.valid_move?
我正在尝试整理我的代码,以便测试从棋盘第一行垂直移动的 Rook 的有效移动 (x_position = 0)。
这是我目前的大脑弯曲挑战。以下代码块循环遍历棋盘上从 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
我使用此代码的目的是,使用循环让 FatroyGirl 在 (0,0) 开始车并迭代 y_position(1..7) 然后将 x_position 递增 1 并再次迭代 y_position(1..7) 直到 (7,7) 被测试。
我不是专家,但看起来你是在位置 (0,0) 创作作品
然后测试是否从 (0,0) 移动到板上的每个位置并断言所有位置都应该有效。
我建议将循环展开为 begin/end 形式并放入一些打印语句,以便您了解发生了什么。
我想你想要更多:
(0..7).each {|i| rook.move_to(?,?) ; (i..7).each {|j| expect(rook.valid_move?(i,j)).to eq(true)}}
所以基本上你想分两个阶段做事。首先将车设置到一个位置,然后测试它是否可以移动到其他有效位置。也可能测试移动到无效位置的尝试。
我正在尝试整理我的代码,以便测试从棋盘第一行垂直移动的 Rook 的有效移动 (x_position = 0)。
这是我目前的大脑弯曲挑战。以下代码块循环遍历棋盘上从 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
我使用此代码的目的是,使用循环让 FatroyGirl 在 (0,0) 开始车并迭代 y_position(1..7) 然后将 x_position 递增 1 并再次迭代 y_position(1..7) 直到 (7,7) 被测试。
我不是专家,但看起来你是在位置 (0,0) 创作作品
然后测试是否从 (0,0) 移动到板上的每个位置并断言所有位置都应该有效。
我建议将循环展开为 begin/end 形式并放入一些打印语句,以便您了解发生了什么。
我想你想要更多:
(0..7).each {|i| rook.move_to(?,?) ; (i..7).each {|j| expect(rook.valid_move?(i,j)).to eq(true)}}
所以基本上你想分两个阶段做事。首先将车设置到一个位置,然后测试它是否可以移动到其他有效位置。也可能测试移动到无效位置的尝试。