使用下面的代码,我的浏览器将启动测试。我可以看到渲染的页面。页面上缺少应该在数据库中的项目。为什么我的数据库没有填充?
当我摆脱“:js => true”时,数据库已设置好..但测试失败,因为我需要javascript来点击表格行。
require 'spec_helper'
feature "[user can add analysis to a line]", :js => true do
context "[User signed in]" do
scenario "[user can visit home page click on a line and add analysis]" do
puts "** Add analysis feature spec not working **"
jim = Fabricate(:user)
sign_in(jim)
nfl = Fabricate(:league, name: "NFLXX")
nba = Fabricate(:league, name: "NBA")
nhl = Fabricate(:league, name: "NHL")
mlb = Fabricate(:league, name: "MLB")
nfl_event1 = Fabricate(:event, league: nfl, home_team: "Eagles")
nfl_event2 = Fabricate(:event, league: nfl, home_team: "Jets")
nba_event = Fabricate(:event, league: nba, home_team: "Sixers")
nhl_event = Fabricate(:event, league: nhl, home_team: "Flyers")
mlb_event = Fabricate(:event, league: mlb, home_team: "Phillies")
visit(posts_path)
find('.league-text').click_link("All")
page.all('.vegas-line')[0].click
click_link("ADD Analysis")
fill_in('post_title', :with => "This is my analysis")
fill_in('post_content', :with => "This is a long analysis for this game. If you like it you should say something to me")
click_button('post')
page.should have_content "Post submitted sucessfully"
end
end
end
答案 0 :(得分:1)
我认为您遇到的问题是,当您使用JavaScript运行测试时,您的测试代码和应用程序服务器代码在不同的线程中运行,因此不会共享相同的数据库连接。
如果使用默认配置运行rspec-rails,您将使用数据库事务进行清理(测试包含在最后回滚的事务中)。这不适用于多个线程或进程。见https://github.com/jnicklas/capybara#transactions-and-database-setup
解决此问题的最常用方法是使用数据库清理程序gem - https://github.com/bmabey/database_cleaner