在Rails + RSpec中对String对象使用have_selector

lea*_*ico 5 rspec ruby-on-rails rspec-rails

我在lib /目录下的文件上写了一个规范.我在那里的一个方法返回一个HTML字符串,但后来我尝试了类似的东西:

expect(subject).to have_selector("p:eq(1)") do |first_p|
Run Code Online (Sandbox Code Playgroud)

它给了我以下错误:

Failure/Error: expect(subject).to have_selector("p:eq(1)") do |first_p|
NoMethodError:
  undefined method `has_selector?' for #<String:0x007f93798a8338>
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?我应该用另一个特定对象包装字符串对象吗?我试过Nokogiri :: HTML.fragment(),但它也没有用.我想我应该用一些webrat的对象或类似的东西包装它,但我不知道如何到达那里.提前致谢.

lea*_*ico 2

我对使用我在本线程前面发现的解决方案感到不太满意type: :view,尽管它是一个非常有效的解决方案。问题是,我对目录内文件的规范lib/实际上不应被视为视图规范。

因此,我在互联网上做了一些进一步的研究,发现了一种对我来说似乎更好的方法。

因此,考虑该线程中的原始示例。您应该只在描述块中添加以下行:

include Webrat::Matchers
Run Code Online (Sandbox Code Playgroud)

所以最后的例子看起来像:

describe MyApp::UI::MyDecoratorClass do
  include Webrat::Matchers
  # ...
end
Run Code Online (Sandbox Code Playgroud)