当预期输出与方法相同时,Ruby和RSpec-Test失败

当预期输出与方法相同时,Ruby和RSpec-Test失败,ruby,rspec,Ruby,Rspec,我知道我错过了一些简单的东西。我想写一个测试,检查数组的数组是否已输出。测试不断失败,但测试预期的结果与方法给出的结果相同 连接4.rb class Board attr_accessor :board def make_and_print_board grid = Array.new(6) { Array.new(6)} p grid end end 连接4_规格rb require './lib/connect4' RSpec.describe Board

我知道我错过了一些简单的东西。我想写一个测试,检查数组的数组是否已输出。测试不断失败,但测试预期的结果与方法给出的结果相同

连接4.rb

class Board
  attr_accessor :board
  def make_and_print_board
    grid = Array.new(6) { Array.new(6)}
    p grid
  end
end
连接4_规格rb

require  './lib/connect4'


RSpec.describe Board do
  let (:new_board) {Board.new}
  it "prints board" do
    expect{new_board.make_and_print_board}.to output(
      Array.new(6) { Array.new(6)}
    ).to_stdout
  end
end


这就是错误

 1) Board prints board
     Failure/Error:
           expect{new_board.make_and_print_board}.to output(
             Array.new(6) { Array.new(6)}

           ).to_stdout

       expected block to output [[nil, nil, nil, nil, nil, nil], [nil, nil, nil, nil, nil, nil], [nil, nil, nil, nil, nil, nil], [nil, nil, nil, nil, nil, nil], [nil, nil, nil, nil, nil, nil], [nil, nil, nil, nil, nil, nil]] to stdout, but output "[nil, nil, nil, nil, nil, nil]\n[nil, nil, nil, nil, nil, nil]\n[nil, nil, nil, nil, nil, nil]\n[nil, nil, nil, nil, nil, nil]\n[nil, nil, nil, nil, nil, nil]\n[nil, nil, nil, nil, nil, nil]\n"

我错过了什么?为什么还没有过去?如何才能通过此测试?

编写此测试的正确方法是详细说明您的期望。测试你期望ii给出的精确值
p
将输出一个新行,因此以这种方式写入

RSpec.describe Board do
  let (:new_board) {Board.new}
  it 'prints board' do
    p_output = "[[nil, nil, nil, nil, nil, nil], [nil, nil, nil, nil, nil, nil], [nil, nil, nil, nil, nil, nil], [nil, nil, nil, nil, nil, nil], [nil, nil, nil, nil, nil, nil], [nil, nil, nil, nil, nil, nil]]\n"

    expect{new_board.make_and_print_board}.to output(p_output).to_stdout
  end
end
但是如果您更关心内部构件,您可能希望添加此规范:

  it 'it outputs a 6 x 6 2d array' do
    expect( new_board.make_and_print_board ).to match_array Array.new(6) { Array.new(6)} 
  end

您正在输出一个数组的字符串表示形式,然后告诉RSpec您希望它输出一个字符串。数组的数组…需要告诉RSpec需要一个字符串(或正则表达式来匹配字符串)