![](/img/trans.png)
[英]Rails 5 - RSpec with FactoryGirl giving error wrong number of arguments
[英]Rails rspec error: wrong number of arguments (0 for 1)
我是Rails和rspec的新手,目前正在在線學習教程。
在本教程中,我正在運行以下代碼:
def display_board(board)
puts " #{board[0]} | #{board[1]} | #{board[2]} "
puts "-----------"
puts " #{board[3]} | #{board[4]} | #{board[5]} "
puts "-----------"
puts " #{board[6]} | #{board[7]} | #{board[8]} "
end
board = [" "," "," "," "," "," "," "," "," "]
display_board(board)
運行測試時,我得到以下輸出:
/lib/display_board.rb
defines a method display_board
#display_board method
represents a cell as a string with 3 spaces (FAILED - 1)
Failures:
1) /lib/display_board.rb #display_board method represents a cell as a string with 3 spaces
Failure/Error:
def display_board(board)
puts " #{board[0]} | #{board[1]} | #{board[2]} "
puts "-----------"
puts " #{board[3]} | #{board[4]} | #{board[5]} "
puts "-----------"
puts " #{board[6]} | #{board[7]} | #{board[8]} "
end
ArgumentError:
wrong number of arguments (0 for 1)
# ./lib/display_board.rb:2:in `display_board'
# ./spec/display_board_spec.rb:10:in `block (4 levels) in <top (required)>'
# ./spec/spec_helper.rb:5:in `capture_puts'
# ./spec/display_board_spec.rb:10:in `block (3 levels) in <top (required)>'
Finished in 0.00296 seconds (files took 0.14604 seconds to load)
2 examples, 1 failure
Failed examples:
rspec ./spec/display_board_spec.rb:9 # /lib/display_board.rb #display_board method represents a cell as a string with 3 spaces
測試用例如下:
it 'represents a cell as a string with 3 spaces' do
output = capture_puts{ display_board }
expect(output).to include(" ")
end
規格文件的第10行是“輸出= capture_puts {display_board}”
在spec_helpr.rb中,“ capture_puts”的定義如下:
def capture_puts
begin
old_stdout = $stdout
$stdout = StringIO.new('','w')
yield
$stdout.string
ensure
$stdout = old_stdout
end
end
我搜索了錯誤“參數數量錯誤(0表示1)”,但沒有得到任何有用的結果。 請指教,因為我確實是Ruby和Rails的初學者。
您必須將木板傳遞給display_board
board = [" "," "," "," "," "," "," "," "," "]
output = capture_puts{ display_board(board) }
expect(output).to include(" ")
錯誤是由於此行
output = capture_puts{ display_board }
display_board
需要一個參數,因此它看起來應該像
output = capture_puts{ display_board(board) }
我還想指出,有一個用於測試stdout的rspec匹配器。
https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers/output-matcher
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.