Je les contrôleurs suivants:Rails voir spécifications: partials référencés des contrôleurs hérités ne sont pas trouvés
ReportsController # Abstract
ReportTemplatesController < ReportsController
ReportDocumentsController < ReportsController
Ainsi je les dossiers de vue suivants:
app/views/reports # Shared templates
app/views/report_templates
app/views/report_documents
Par exemple, dans les deux .../report_templates/index.html.slim
et .../report_documents/index.html.slim
, j'ai cet appel:
== render 'reports', reports: @reports
Le _reports.html.slim
vit partiellement dans .../reports
, comme il est utilisé par les deux. Cela fonctionne parfaitement.
Dans la _reports.html.slim
partielle, je fais un peu troncature:
= truncate report.description, length: 100
Je veux affirmer cela en utilisant une spécification de vue, car il est moins cher qu'une spécification de fonction.
require 'rails_helper'
RSpec.describe "report_templates/index", type: :view do
it 'Truncates the description' do
assign :reports, [create(:report_template, description: 'This is a very long description. This is a very long description. This is a very long description. This is a very long description. This is a very long description.')]
render
expect(rendered).to have_css '.description', text: 'This is a very long description. This is a very long description. This is a very long description...'
end
end
Malheureusement, cela donne l'erreur suivante:
Failures:
1) reports/index Truncates the description
Failure/Error: render
ActionView::MissingTemplate:
Missing template reports/index with {:locale=>[:en], :formats=>[:html, :text, :js, :css, :ics, :csv, :vcf, :png, :jpeg, :gif, :bmp, :tiff, :mpeg, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :slim, :coffee, :axlsx, :jbuilder, :haml]}. Searched in:
* "/Users/josh/Documents/Work/Access4All/Projects/a4aa2/src/app/views"
Mais quand je change la ligne
RSpec.describe "reports/index", type: :view do
à, par exemple
RSpec.describe "reports_templates/index", type: :view do
les changements d'erreur à:
Failures:
1) report_templates/index Truncates the description
Failure/Error: == render 'reports', reports: @reports
ActionView::Template::Error:
Missing partial /_reports, report_templates/_reports with {:locale=>[:en], :formats=>[:html, :text, :js, :css, :ics, :csv, :vcf, :png, :jpeg, :gif, :bmp, :tiff, :mpeg, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :slim, :coffee, :axlsx, :jbuilder, :haml]}. Searched in:
* "/Users/josh/Documents/Work/Access4All/Projects/a4aa2/src/app/views"
Alors maintenant, les références partielles, qui vit dans reports
, ne se trouve plus.
Donc quel que soit le chemin de vue que je fournis, la spécification ne semble pas connaître l'héritage du contrôleur et regarder dans les chemins hérités elle-même.
Comment puis-je faire fonctionner cette spécification?