繁体   English   中英

如何在rspec Cabybara测试套件中设置参数?

[英]How to set a parameter in rspec Cabybara test suite?

我的问题可能有多个答案。 我还是这个新手。

我想做的是路由到具有两个不同参数集的页面。

/users/2/edit?type=edit
/users/2/edit?type=password

当我亲自去那里时,我就能到达那里:

控制器代码:

def edit
    @edit_type = params[:type]
  end

查看代码:

<%= form_for(@user) do |f| %>
        <%= render 'shared/error_messages', object: f.object %>
        <% if current_user.admin? and @edit_type == 'edit' %>
            <%= f.label :username %>
            <%= f.text_field :username %>
        <% else%>
            <% if current_user?(@user) %>
                <%= f.label :curr_password, "Current Password" %>
                <%= f.password_field :curr_password %>
            <% end %>
            <%= f.label :password %>
            <%= f.password_field :password %>

            <%= f.label :password_confirmation, "Confirm Password" %>
            <%= f.password_field :password_confirmation %>

        <% end %>
        <%= f.submit "Save changes", class: "btn btn-lg btn-primary" %>
    <% end %>

但是我如何通过Capybara从rspec到达那里呢?

测试代码:

 describe "edit" do
    let(:user) { FactoryGirl.create(:user) }
    let(:admin) { FactoryGirl.create(:admin) }
    describe "page" do
      describe "as non-admin" do
        before do
          sign_in user
          visit edit_user_path(user)
        end
        it { should have_content("Update Password") }
        it { should have_title("Edit user") }
        it { should_not have_content("Username") }
      end
      describe "as admin " do
        # describe "visiting "
        before do
          sign_in admin
          visit edit_user_path(user)
        end
        # These all fail because it doesn't go to the right site (type is empty)
        it { should have_content("Update User Record") }
        it { should have_title("Edit user") }
        it { should  find_field("Username") }
      end
    end
. . .

如何在rspec / Capybara中设置参数(?type ='something')?

或者,可以/应该路由到此吗? 就像是:

/users/:id/edit/:type

我该怎么做? 我该如何测试

您只需将type参数传递到路由帮助器中即可。 在您的管理员测试中:

visit edit_user_path(user)

应该是这样的:

visit edit_user_path(user, :type => "user")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM