【问题标题】:Rspec expected link_to not finding anythingRspec 期望 link_to 没有找到任何东西
【发布时间】:2012-11-03 00:53:45
【问题描述】:

![在此处输入图像描述][1]我一直在阅读 Michael Hartl 的 RoR 教程书,但我在 Rspec 上遇到了 7 次失败。我一直在寻找 3 个小时来找到错误,但我找不到它。错误表明我没有 link_to 注销(一个来自用户页面,一个来自编辑页面)、link_to 更改和一堆 have_selector 错误。这是 rspec user_pages_spec.rb。我几乎肯定 edit.html.erb 和 header.html 很好,但如果没有人发现这个 rspec 有什么问题,那就把它贴出来

 describe "edit" do
    let(:user) { FactoryGirl.create(:user) }
    before do
        sign_in user
        visit edit_user_path(user)
    end

    describe "page" do
        it { should have_selector('h1',    text: "Update your profile") }
        it { should have_selector('title', text: "Edit user") }
        it { should have_link('change', href: 'http://gravatar.com/emails') }
    end

    describe "with valid information" do
        let(:new_name) { "New Name" }
        let(:new_email) { "new@example.com" }
        before do
            fill_in "Name",             with: new_name
            fill_in "Email",            with: new_email
            fill_in "Password",         with: user.password
            fill_in "Confirm Password", with: user.password
            click_button "Save changes"
        end

        it { should have_selector('title', text: new_name) }
        it { should have_selector('div.alert.alert-success') }
        it { should have_link('Sign out', href: signout_path) }
        specify { user.reload.name.should == new_name }
        specify { user.reload.email.should == new_email }
    end

结束

这里是错误以及与之相关的其余文件

Failures:

  1) User pages signup with valid information after saving the user
     ←[31mFailure/Error:←[0m ←[31mit { should have_link('Sign out') }←[0m
       ←[31mexpected link "Sign out" to return something←[0m
←[36m     # ./spec/requests/user_pages_spec.rb:30:in `block (5 levels) in <top (
required)>'←[0m

  2) User pages edit page
     ←[31mFailure/Error:←[0m ←[31mit { should have_link('change', href: 'http://
gravatar.com/emails') }←[0m
       ←[31mexpected link "change" to return something←[0m
←[36m     # ./spec/requests/user_pages_spec.rb:134:in `block (4 levels) in <top
(required)>'←[0m

  3) User pages edit page
     ←[31mFailure/Error:←[0m ←[31mit { should have_selector('title', text: "Edit
 user") }←[0m
       ←[31mexpected css "title" with text "Edit user" to return something←[0m
←[36m     # ./spec/requests/user_pages_spec.rb:133:in `block (4 levels) in <top
(required)>'←[0m

  4) User pages edit page
     ←[31mFailure/Error:←[0m ←[31mit { should have_selector('h1',    text: "Upda
te your profile") }←[0m
       ←[31mexpected css "h1" with text "Update your profile" to return somethin
g←[0m
←[36m     # ./spec/requests/user_pages_spec.rb:132:in `block (4 levels) in <top
(required)>'←[0m

  5) User pages edit with valid information
     ←[31mFailure/Error:←[0m ←[31mit { should have_selector('div.alert.alert-suc
cess') }←[0m
       ←[31mexpected css "div.alert.alert-success" to return something←[0m
←[36m     # ./spec/requests/user_pages_spec.rb:149:in `block (4 levels) in <top
(required)>'←[0m

  6) User pages edit with valid information
     ←[31mFailure/Error:←[0m ←[31mit { should have_selector('title', text: new_n
ame) }←[0m
       ←[31mexpected css "title" with text "New Name" to return something←[0m
←[36m     # ./spec/requests/user_pages_spec.rb:148:in `block (4 levels) in <top
(required)>'←[0m

  7) User pages edit with valid information
     ←[31mFailure/Error:←[0m ←[31mit { should have_link('Sign out', href: signou
t_path) }←[0m
       ←[31mexpected link "Sign out" to return something←[0m
←[36m     # ./spec/requests/user_pages_spec.rb:150:in `block (4 levels) in <top
(required)>'←[0m



<% provide(:title, "Edit user") %>
<h1>Update your profile</h1>
<div class="row">
    <div class="span6 offset3">
        <%= form_for(@user) do |f| %>
            <% render 'shared/error_messages' %>

            <%= f.label :name %>
            <%= f.text_field :name %>

            <%= f.label :email %>
            <%= f.text_field :email %>

            <%= f.label :password %>
            <%= f.password_field :password %>

            <%= f.label :password_confirmation, "Confirm Password" %>
            <%= f.password_field :password_confirmation %>
        <%= f.submit "Save changes", class: "btn btn-large btn-primary" %>
        <% end %>

        <%= gravatar_for @user %>
       <a href="http://gravatar.com/emails">change</a>
    </div>
</div>


<header class="navbar navbar-fixed-top">
    <div class="navbar-inner">
        <div class="container">
            <%= link_to "Anime Ranting", root_path, id: "logo" %>
            <nav>
                <ul class="nav pull-right">
                    <li><%= link_to "Home", root_path %></li>
                    <li><%= link_to "Help", help_path %></li>
                    <% if signed_in? %>
                        <li><%= link_to "Users", '#' %></li>
                        <li id="fat-menu" class="dropdown">
                            <a href-"#" class="dropdown-toggle" data-toggle="dropdown">
                                Account <b class="caret"></b>
                            </a>
                            <ul class="dropdown-menu">
                                <li><%= link_to "Profile", current_user %></li>
                                <li><%= link_to "Settings", edit_user_path(current_user) %></li>
                                <li class="divier"></li>
                                <li><%= link_to "Sign out", signout_path, method: "delete" %></li>
                            </ul>
                        </li>
                    <% else %>
                        <li><%= link_to "Sign in", signin_path %></li>
                    <% end %>
                </ul>
            </nav>
        </div>
    </div>
</header>

【问题讨论】:

  • 你能发布错误吗?
  • 给你。希望有帮助
  • 我会尝试的第一件事是注释掉除一个之外的所有测试,并找出为什么一个测试没有通过。然后打开另一个测试,等等等等。只是粘贴一堆代码并说“它不起作用,有什么问题?”真的没用。
  • 好吧,这就是我所做的,我缩小了错误所在。到目前为止没有找到任何东西

标签: ruby-on-rails railstutorial.org


【解决方案1】:

您在describe "edit" do 下方缺少subject { page }。这使您可以使用语法it { should ...

【讨论】:

    猜你喜欢
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多