rails test rspec capybara have_css没有匹配

时间:2017-02-20 18:56:59

标签: ruby-on-rails rspec capybara rspec-rails

我正在努力进行简单的测试

require "rails_helper"

RSpec.feature "Home page", :type => :feature do
 scenario "When a user visit it" do
  visit "/"
  expect(page).to have_css('article', count: 10) 
 end
end

在视图中我有这段代码

<% @articles.each do |article| %>
  <article>
    <header> <%= article.title%> </header>
    <div class="content-summary"> <%= article.body %> </div>
  </article>
  <hr/>
<% end %>

当我运行测试时,我得到了

Failure/Error: expect(page).to have_css('article', count: 10)
   expected to find css "article" 10 times but there were no matches

我运行服务器,我可以看到存在10个文章标签。

当我将视图更改为此

<% 10.times do %>
  <article>
    <header> </header>
    <div class="content-summary"> </div>
  </article>
  <hr/>
<% end %>

测试通过

请帮帮我

1 个答案:

答案 0 :(得分:1)

Rails为每个环境都有单独的数据库。默认情况下,本地服务器以 1 .text 2 .globl asm_memcheck 3 .type asm_memcheck, @function 4 asm_memcheck: 5 sw $zero,0xFFF00000 6 sw $at,0xFFF00004 7 sw $v0,0xFFF00008 8 sw $v1,0xFFF0000C 9 sw $a0,0xFFF00010 10 sw $a1,0xFFF00014 11 sw $a2,0xFFF00018 12 sw $a3,0xFFF0001C 13 sw $t0,0xFFF00020 14 sw $t1,0xFFF00024 15 sw $t2,0xFFF00028 16 sw $t3,0xFFF0002C 17 sw $t4,0xFFF00030 18 sw $t5,0xFFF00034 19 sw $t6,0xFFF00038 20 sw $t7,0xFFF0003C 21 sw $s0,0xFFF00040 22 sw $s1,0xFFF00044 23 sw $s2,0xFFF00048 24 sw $s3,0xFFF0004C 25 sw $s4,0xFFF00050 26 sw $s5,0xFFF00054 27 sw $s6,0xFFF00058 28 sw $s7,0xFFF0005C 29 sw $t8,0xFFF00060 30 sw $t9,0xFFF00064 31 sw $k0,0xFFF00068 32 sw $k1,0xFFF0006C 33 sw $gp,0xFFF00070 34 sw $sp,0xFFF00074 35 sw $fp,0xFFF00078 36 sw $ra,0xFFF0007C 37 38 .end asm_memcheck 39 模式运行,因此连接到development数据库。但是,RSpec在app_name_development环境中运行测试并使用test数据库。这就是为什么在运行服务器时看到的文章在RSpec测试中不可用。

测试需要手动设置数据。如果您正在使用RSpec,我认为您也安装了FactoryGirl。在这种情况下,测试应该看起来像这样:

app_name_test