1

我正在使用 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

电子邮件输入是我以前的旧输入,它确实可以识别它。城市输入是新的,它甚至没有出现在终端的视图输出中。

我究竟做错了什么?

4

1 回答 1

0

哇,这是一个棘手的问题。

我正在使用设计并想测试它的观点。在我看来测试中,我说:

describe "devise/registrations/new" do
  # code here
end

但是,前几天我切换到范围视图,并将视图文件夹名称从 更改deviseusers。如果您有不同的用户模型,例如并且需要不同的视图,则范围视图user很好adminconfig/initializers/devise.rb您可以通过将现有范围线替换为以下内容来打开范围视图:

config.scoped_views = true

因此,我还不得不将我的规格描述更改为

describe "users/registrations/new" do # change to "users" instead of "devise"
  # code here
end

由于我没有这样做,它仍然渲染了设计的标准视图,当它在我的视图文件夹中找不到任何视图时它会渲染 - 因此我的终端中的源代码输出表明它可以渲染正确的视图,但是缺少更新的代码。

于 2013-01-22T16:04:02.490 回答