来自数据库(SQLite)的数据未显示在Capybara中

时间:2013-09-05 06:32:30

标签: ruby-on-rails ruby sqlite cucumber capybara

我使用Capybara和Cucumber为我的网站实施集成测试。但是来自数据库(sqlite)的数据没有在Capybara中显示"print page.html"

index.html.erb:

<% provide(:title, "All posts")%>

<h3>Blogs <%= link_to "Create a post", new_post_path, class: 'pull-right' %></h3>

<%= will_paginate @posts %>
<%= render @posts %>
<%= will_paginate @posts %>

posts_controller.rb:

class PostsController < ApplicationController
    def index
       @posts = Post.paginate(page: params[:page], per_page: 10)
    end
end

我尝试使用rake db:seed RAILS_ENV = test成功测试环境的初始数据。但是当我运行rake cucumber时,来自此环境的数据为空。如何使用Capybara修复数据库(sqlite)中的测试数据?感谢

2 个答案:

答案 0 :(得分:0)

默认情况下,在场景之前和之后,cucumber-rails会运行DatabaseCleaner.startDatabaseCleaner.clean。您可以像这样禁用此行为:

  # features/support/env.rb
  # ...
  Cucumber::Rails::Database.autorun_database_cleaner = false

答案 1 :(得分:0)

而不是像这样播种数据,你应该为这个特定场景的黄瓜写一个步骤,例如,

  Scenario: Post index
    Given I have 10 posts
    When I go to the list of posts
    ......

Given /^I have (.+) posts$/ do |num|
  num.to_i.times do
    Post.create(title: "post_#{num}")
  end
end