通过 rspec 测试

Passing the rspec test

嘿,我正在构建扫雷游戏作为我的项目,但我无法通过此测试。

  it "should initialise each position in each column in matrix as _" do
            matrix = []
            matrix[0] = ["_", "_", "_", "_", "_", "_","_"]
            matrix[1] = ["_", "_", "_", "_", "_", "_","_"]
            matrix[2] = ["_", "_", "_", "_", "_", "_","_"]
            matrix[3] = ["_", "_", "_", "_", "_", "_","_"]
            matrix[4] = ["_", "_", "_", "_", "_", "_","_"]
            matrix[5] = ["_", "_", "_", "_", "_", "_","_"]
            matrix[6] = ["_", "_", "_", "_", "_", "_","_"]
            @game.clearcolumns
            @game.matrix.should eql matrix
        end

这是我的简单方法:

def clearcolumns
        def matrix
            matrix = []
            matrix[0] = ["_", "_", "_", "_", "_", "_","_"]
            matrix[1] = ["_", "_", "_", "_", "_", "_","_"]
            matrix[2] = ["_", "_", "_", "_", "_", "_","_"]
            matrix[3] = ["_", "_", "_", "_", "_", "_","_"]
            matrix[4] = ["_", "_", "_", "_", "_", "_","_"]
            matrix[5] = ["_", "_", "_", "_", "_", "_","_"]
            matrix[6] = ["_", "_", "_", "_", "_", "_","_"]
        end
    end

出于某种原因我失败了:

Failure/Error: @game.matrix.should eql matrix

       expected: [["_", "_", "_", "_", "_", "_", "_"], ["_", "_", "_", "_", "_", "_", "_"], ["_", "_", "_", "_", "_", ... "_", "_", "_", "_", "_"], ["_", "_", "_", "_", "_", "_", "_"], ["_", "_", "_", "_", "_", "_", "_"]]
            got: ["_", "_", "_", "_", "_", "_", "_"]

ruby 中的方法(没有明确的 return 语句)将 return 最后一行代码的执行结果。在您的情况下,matrix 的最后一行是 matrix[6] = ["_", "_", "_", "_", "_", "_","_"],因此该方法将始终是 returning ["_", "_", "_", "_", "_", "_","_"]。如果你想 return 完整的矩阵,你可以这样做:

def matrix
  # Initialize the matrix variable
  matrix = []

  # Explicitly set each row of the matrix
  matrix[0] = ["_", "_", "_", "_", "_", "_","_"]
  matrix[1] = ["_", "_", "_", "_", "_", "_","_"]
  matrix[2] = ["_", "_", "_", "_", "_", "_","_"]
  matrix[3] = ["_", "_", "_", "_", "_", "_","_"]
  matrix[4] = ["_", "_", "_", "_", "_", "_","_"]
  matrix[5] = ["_", "_", "_", "_", "_", "_","_"]
  matrix[6] = ["_", "_", "_", "_", "_", "_","_"]

  # Return the matrix
  matrix
end