首页 > 解决方案 > 通过 rspec 测试

问题描述

嘿,我正在构建扫雷游戏作为我的项目,但我在通过此测试时遇到问题。

  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: ["_", "_", "_", "_", "_", "_", "_"]

标签: rubyrspec

解决方案


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

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

推荐阅读