首页 > 解决方案 > Rspec 返回“意外的'{',期待keyword_end”的语法错误

问题描述

这适用于一台装有 Ruby 的机器,但不适用于另一台机器。

代码:

describe 'testing reverse string different ways' do

  let :thing {'cba321'}

  it 'the system method' do
    source = '123abc'
    result = source.reverse
    expect(result).to eq 'cba321'
  end 
end

错误:

SyntaxError:                                                                                                             
  /home/michael/Dropbox/90_2019/work/code/ruby__rails/ruby/reverse_string_tests_timing/test_spec.rb:12: syntax error, une
xpected '{', expecting keyword_end                                                                                       
    let :thing {'cba321'}                                                                                                
               ^                                                                                                         
  /home/michael/Dropbox/90_2019/work/code/ruby__rails/ruby/reverse_string_tests_timing/test_spec.rb:12: syntax error, une
xpected '}', expecting end-of-input                                                                                      
    let :thing {'cba321'}  

标签: rubyrspec

解决方案


在 Ruby2.4.1中,在 let 中没有括号是允许的,但在 Ruby2.5.1中则不允许。

所以解决方法是在 中添加括号let,例如

改变

let :source {'cba321'}

let (:source) {'cba321'}

推荐阅读