1

我使用 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 %>

post_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)中的测试数据?谢谢

4

2 回答 2

0

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

  # features/support/env.rb
  # ...
  Cucumber::Rails::Database.autorun_database_cleaner = false
于 2013-09-05T06:43:12.603 回答
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
于 2013-09-05T06:57:13.153 回答