我正在使用rspec在rails 3.2应用程序中测试一个视图。
我已经为我的视图编写了测试以包含一些额外的输入字段,并且它们正确地失败了。但是,在添加所需的输入字段后,测试仍然以相同的方式失败。他们在终端输出表格,好像我没有改变观点中的任何内容。
在浏览器中检查视图时,实际上存在字段,因此测试应该通过。
rspec没有加载最新的视图吗?
这是一些代码(我已将其缩减为两个字段):
it "renders the form to sign up" do
rendered.should have_selector("form", action: "/users", method: "post") do |form|
form.should have_selector("input#user_email", name: "user[email]", type: "email")
form.should have_selector("input#user_city", name: "user[city]", type: "text")
end
end
电子邮件输入是我以前使用的旧输入,它确实识别它。城市输入是新的,甚至不会出现在终端的视图输出中。
我做错了什么?
答案 0 :(得分:0)
我正在使用设计并想测试其观点。在我的观察测试中,我说:
describe "devise/registrations/new" do
# code here
end
但是,前几天我切换到了作用域视图,并相应地将视图文件夹名称从devise
更改为users
。如果您有不同的用户模型,例如user
和admin
,并且需要不同的视图,则视图范围很有用。您可以在config/initializers/devise.rb
中启用作用域视图,方法是将现有范围行替换为:
config.scoped_views = true
因此,我还必须将我的规范描述更改为
describe "users/registrations/new" do # change to "users" instead of "devise"
# code here
end
由于我没有这样做,它仍然呈现了设计的标准视图,当它在我的视图文件夹中找不到任何视图时呈现 - 因此我的终端中的源代码输出,表明它可以呈现正确的视图,但缺少更新的代码。