我正在測試javascript,當我嘗試通過ajax表單提交數據到數據庫時,出現以下錯誤。水豚錯誤ActiveRecord :: StatementInvalid:SQLite3 :: BusyException:數據庫被鎖定
ActiveRecord::StatementInvalid: ActiveRecord::StatementInvalid: SQLite3::BusyException: database is locked: INSERT INTO "check_category_item_keys" ("name", "key_type", "created_at", "updated_at") VALUES (?, ?, ?, ?)
這裏是我的集成測試文件
require 'test_helper'
class JavascriptTestingTest < ActionDispatch::IntegrationTest
setup do
@user = users(:michael)
@user1 = users(:archer)
@guide = Guide.find(1)
@mod_relationship = game_mods_relationships(:mod1)
@category = Category.find(1)
Capybara.current_driver = Capybara.javascript_driver # :selenium by default
end
test "adding keys mod success then fail" do
log_in_as(@user)
visit(edit_guide_category_path(@guide, @category))
itemkeycount = CategoryItemKey.count
fill_in 'Key name', with: "diablo"
click_button "Add New Key" #works fine when this line is removed
end
我是新來的測試JS所以我猜有更多的東西,我需要做什麼,我需要改變。
我有'assert_text'diablo'' 'click_button'將文字diablo添加到使用ajax刷新的div中以顯示新添加的鍵(在表單提交後刷新),我想我需要擴展出現文本的限制。 – Rob
如果assert_text沒有引發錯誤,那麼您不需要延長查看文本的時間。從您的描述中可以看出,在ajax調用之前或者在完成ajax調用之前,文本'diablo'被添加到了div中。如果前者(或者頁面上已經存在其他「暗黑破壞神」實例),那麼檢查並不是一個好的改變。 –
你需要檢查一些表明ajax已經完成的東西(因此也完成了數據庫訪問) - 例如,如果ajax添加了一個class'key'的div,並且你知道屏幕上有2個以前可以執行' assert_selector'div.key',count:3'這將等待那裏有3個'關鍵'divs - 如果你需要更多的信息 - 更新你的問題來完成你正在使用的全面測試,也許增加一些html –