我想要干掉我的代码,以便测试从国际象棋棋盘的第一行垂直移动的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
我使用此代码之后的代码是,而不是FactoryGirl在(0,0)开始运行,使用循环让FatroyGirl在(0,0)开始运行并迭代y_position(1 ..7)然后将x_position递增1并再次迭代y_position(1..7)直到(7,7)被测试。
答案 0 :(得分:0)
我绝不是专家,但看起来你正在创建位置(0,0)
然后测试是否从(0,0)移动到电路板上的每个位置并断言所有位置都应该有效。
我建议将循环展开到开始/结束表单并输入一些打印语句,以便您可以了解正在发生的事情。
我认为你想要更多:
(0..7).each {|i| rook.move_to(?,?) ; (i..7).each {|j| expect(rook.valid_move?(i,j)).to eq(true)}}
所以基本上你想分两个阶段做事。首先将车辆设置到某个位置,然后测试它是否可以移动到其他有效位置。并且还可能测试移动到无效位置的尝试。