恼人的RSPEC错误

时间:2011-05-06 21:19:32

标签: ruby-on-rails rspec specifications

嘿所有, 我的Rspec测试因错误而失败:

syntax error, unexpected kEND, expecting $end (SyntaxError)

我不知道为什么,我的代码如下(实际内容通过xcode侧边栏上的箭头删除):

require 'spec_helper'

describe UsersController do 
  render_views 
  describe "GET 'show'" do 
    ... 
  end 
  describe "GET 'new'" do 
     ... 
  end 
  describe "POST 'create'" do 
    ... 
  end 
end 

http://snipt.org/xtpm

的完整代码

3 个答案:

答案 0 :(得分:0)

通常该错误表示您的程序中某处有额外的end。您应该在生成错误的文件中检查所有内容是否正确平衡。一种方法是剪切大块,看看你是否可以单独“运行”文件,直到将其缩小到精确的位置。

作为一个注释,如果你做出有纪律的努力来保持一致的缩进,那么这些错误将更加明显。从事物的外观来看,可能是由于标签的粘贴和转换,这些块都到处都是。

在任何情况下,粘贴的代码至少会通过解析器而不会发生意外。

答案 1 :(得分:0)

在您发布的来源链接中,很多广告块都使用 DO 而不是执行。这肯定会引起你所描述的问题。

答案 2 :(得分:0)

通常这个错误意味着你有一个end太少,它遇到了文件的结尾,并且期望仍然找到一个end命令。 但是,从您展示的代码中我并不直接清楚。你的缩进是非常不一致的,这无助于第一眼看清楚:)

我看到的内容:如果您使用的是rspec1,the documentation建议在测试更改时使用{}而不是do .. end。所以在你的情况下:

lambda {
  post :create, :user => @attr
}.should change(User, :count).by(1)

在rspec2中,你应该写

expect { ... }.to change

所以在你的情况下

expect { post :create, :user => @attr }.to change(User, :count).by(1)

希望这有帮助。