Ich verwende Rails 4.2 und RSpec 3.4. Ich versuche, einen Ansichtstest für eine Ansicht zu schreiben, die eine <%= button_to ... %>
Löschschaltfläche enthält. Mein Test nicht mit diesem Fehler:RSpec 3.4/Rails 4.2: Wie man eine Ansicht mit button_to
Failures:
1) projects/show.html.erb get secret project as nondisclosed devcomm user shows the obfuscated name and disclosed user
Failure/Error: <%= button_to "Delete this project and reassign all children to parent", {}, method: "delete", data: { confirm: "Are you sure?" }, class: "btn btn-danger" %>
ActionView::Template::Error:
No route matches {:action=>"show", :controller=>"projects"}
# ./app/views/projects/show.html.erb:13:in `_app_views_projects_show_html_erb___2105827750050220814_23458641445220'
# ./spec/views/projects/show.html.erb_spec.rb:23:in `block (3 levels) in <top (required)>'
# ------------------
# --- Caused by: ---
# ActionController::UrlGenerationError:
# No route matches {:action=>"show", :controller=>"projects"}
# ./app/views/projects/show.html.erb:13:in `_app_views_projects_show_html_erb___2105827750050220814_23458641445220'
Der Test wird wie folgt dar:
require 'rails_helper'
RSpec.describe "projects/show.html.erb", type: :view do
fixtures :users, :projects
context "get secret project as disclosed user" do
it "shows the unobfuscated name and disclosed user" do
assign(:user, users(:nondevcomm1))
assign(:project, projects(:secretproject2))
render
expect(rendered).to match "Secret project 2"
expect(rendered).to match "Boo Wah, Another job title"
end
end
context "get secret project as nondisclosed devcomm user" do
it "shows the obfuscated name and disclosed user" do
assign(:user, users(:devcomm1))
assign(:project, projects(:secretproject2))
render ### This is where it fails
expect(rendered).to match "Project 3"
expect(rendered).to match "Boo Wah, Another job title"
end
end
end
Der Grund, die erste Test Pässe und die zweiten nicht, weil der Benutzer im ersten Test ist nondevcomm und die Aussicht hat eine Bedingung, die button_to nur anzuzeigen, wenn der Benutzer devcomm ist.
Ich habe gefunden this related StackOverflow question, aber weil die Schaltfläche, die das Problem löscht Datensätze verursacht, möchte ich es als eine Schaltfläche und nicht eine Verknüpfung beibehalten, so dass ich es nicht nur zu einem Link_to ändern kann.
Irgendwelche Ideen, wie ich eine Ansicht testen kann, die ein button_to enthält?
Dank dieses half mir sehr. Meine Lösch-Schaltfläche war in einem anderen Format, also musste ich diesen Code verwenden: <% = button_zu "Löschen", {action:: destroy, id: @ resource.id}, methode:: löschen, klasse: "btn btn-danger "%> -> – rmcsharry