嘿所有, 我的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
的完整代码
答案 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)
希望这有帮助。