2015-12-31 3 views
0

Похоже, что rspec не передает никаких аргументов методу, даже если они записаны в spec-файле.неправильные аргументы числа (0 для 1) (ArgumentError)

Метод:

def echo(msg) 
    msg 
end 

Тест:

require './echo.rb' 

describe echo do 
    it 'echoes' do 
    expect(echo('hello')).to eq('hello') 
    end 
end 

терминал вывода:

/home/.../scratch/echo.rb:1:in `echo': wrong number of arguments (0 for 1) (ArgumentError) 
from /home/.../scratch/scratch_spec.rb:3:in '<top (required)>' 
from /home/.../.rvm/gems/ruby-2.2.1/gems/rspec-core-3.4.1/lib/rspec/core/configuration.rb:1361:in 'load' 
... 
+0

Кажется работать, если я передать аргумент в строке описания 'описывают эхо («Hello») do'. Это предназначено? –

ответ

2

Вы должны изменить:

describe echo do 

к:

describe 'echo' do 

т.е. помещая имя метода в виде строки. В противном случае он пытается вызвать метод echo в этот момент, и вы не передадите здесь аргумент, и, следовательно, вы получите указанную ошибку.

Таким образом, это должно работать отлично:

describe 'echo' do 
    it 'echoes' do 
    expect(echo('hello')).to eq('hello')  
    end 
end 
Смежные вопросы