我有幾個非JavaScript的規格,使用用戶界面來創建和編輯記錄。 當我運行這些規格時,測試數據庫記錄將由rspec拆卸爲我自動爲每個測試刪除。爲什麼使用javascript的rspec功能規範不做測試拆解?
但是,下面這個測試是第一個對某些ajax產品擁有:js => true
的測試,不會在之後進行記錄拆除,然後測試開始中斷,因爲數據庫在啓動時不再是空的。鏈接和組行仍然存在於測試數據庫中。
# spec/features/verifying_link_spec.rb
require 'spec_helper'
describe "verification", :js => true, :type => :feature do
before :all do
User.create(:username => '[email protected]', :password => 'esceptio')
end
before :each do
visit '/ladmin/login'
fill_in 'username', :with => '[email protected]'
fill_in 'password', :with => 'esceptio'
find('input[value="Login"]').click
end
it "lets me verify a link" do
find('div#side div a', text: 'New Group').click
fill_in 'group[group_name]', with: 'Group Add'
click_button 'Save'
find('div#side div a', text: 'New Link').click
fill_in 'link[url_address]', with: 'http://www.a.com/newtest9876link'
fill_in 'link[alt_text]', with: 'abcd9876'
click_button 'Save'
this_year=Time.now.strftime('%Y')
l=Link.first
l.update_attribute(:verified_date, nil)
expect(Link.count).to eq 1
visit links_path
find('a', text: "verify")
click_link("verify", match: :first)
sleep(3)
expect(page).to have_content(this_year)
end
end
現在我使用使用UI刪除的記錄(下圖)的解決方法解決方案,但是這不應該是我的其他單元測試或功能測試需要
# added at bottom of spec
click_link('Details')
click_link('Delete')
page.driver.browser.switch_to.alert.accept
click_link('Groups')
click_link('Delete')
page.driver.browser.switch_to.alert.accept
無(除這一個與JS)有這個問題。它們都會創建自動刪除的記錄。
您使用的是database_cleaner gem嗎?你用什麼來運行JS測試,硒,phantomjs,chromedriver? – ChrisBarthol 2014-09-13 14:15:50
我沒有使用數據庫清理寶石。我正在考慮它。雖然我想知道爲什麼這個測試有這個問題(而其他人不知道),但我正在做的是學習。我也有一些關於在每次測試之間截斷數據庫的策略以及是否會有任何性能影響的問題。我正在使用我認爲使用硒的RSpec和水豚 – 2014-09-13 14:54:10