rspec视图规范的默认主题是什么?

rspec视图规范的默认主题是什么?,rspec,Rspec,给定轨道的rspec视图规范 RSpec.describe "plots/show", type: :view do describe "displaying inoculation" do context "inoculated" do it "displays 'Yes'" do assign(:plot, build(:plot)) render expect(rendered).to have_content("In

给定轨道的rspec视图规范

RSpec.describe "plots/show", type: :view do
  describe "displaying inoculation" do
    context "inoculated" do
      it "displays 'Yes'" do
        assign(:plot, build(:plot))
        render
        expect(rendered).to have_content("Inoculated? Yes")
      end
    end
  end
end
当我尝试将隐式主题样式与
it{}
一起使用时

context "inoculated" do
  before do
    assign(:plot, build(:plot))
    render
  end
  it { is_expected.to have_content("Inoculated? Yes") }
end
测试失败,预期在“已接种”中找到文本“已接种?是”


我希望隐式主题是视图,但相反,主题是传递给
上下文的字符串。为什么视图规格不将视图作为规格的隐式主题?

它与视图规格无关。确定默认主题时,它尝试在嵌套描述链中定位类引用。获取最内部的类(如果找到)。如果找不到,则采用最里面的值(大概是字符串)

输出
添加了更多结果。:)
RSpec.describe User do
  describe 'foo' do
    describe 'bar' do
      it { puts subject }
      it { puts subject.class }
    end
  end
end

RSpec.describe 'User' do
  describe 'foo' do
    describe 'bar' do
      it { puts subject }
      it { puts subject.class }
    end
  end
end

RSpec.describe 'User' do
  describe Project do
    describe 'bar' do
      it { puts subject }
      it { puts subject.class }
    end
  end
end
#<User:0x007fe77593af80>
User
bar
String
#<Project:0x007fe7924f9170>
Project
From: /Users/sergio/.gem/ruby/2.4.1/gems/rspec-core-3.6.0/lib/rspec/core/memoized_helpers.rb @ line 57:
Owner: RSpec::Core::MemoizedHelpers
Visibility: public
Number of lines: 6

def subject
  __memoized.fetch_or_store(:subject) do
    described = described_class || self.class.metadata.fetch(:description_args).first
    Class === described ? described.new : described
  end
end