我使用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)中的测试数据?感谢
答案 0 :(得分:0)
默认情况下,在场景之前和之后,cucumber-rails会运行DatabaseCleaner.start
和DatabaseCleaner.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