gpt4 book ai didi

ruby-on-rails - ActiveRecord::RecordNotFound 用于在 'js: true' 功能规范中刚创建的记录

转载 作者:行者123 更新时间:2023-12-04 06:00:10 25 4
gpt4 key购买 nike

尝试在简单的功能规范中使用 javascript,但我什至无法访问该页面。

describe "DiskFiles" do
...
describe "update action", js: true do
before(:each) do
df = FactoryGirl.create(:disk_file)
visit edit_disk_file_path(df)
end

it "should not show checkmark if no match" do
expect(page).to_not have_content "✓"
end
end
end

我收到此错误:
  1) DiskFiles update action should not show checkmark if no match
Failure/Error: Unable to find matching line from backtrace
ActiveRecord::RecordNotFound:
Couldn't find DiskFile with id=7598 [WHERE "disk_items"."type" IN ('DiskFile')]
# ./app/controllers/disk_files_controller.rb:89:in `set_disk_file'

这让我很困惑,因为我刚刚在 before(:each) 中创建了该记录当我删除 js: true 时它就过去了.

我错过了什么?

最佳答案

看起来您正在使用事务性装置运行测试。当您使用 js: true 运行测试时它将运行您的应用程序并在单独的线程中进行测试。您创建您的 disk_file测试线程中的事务(在测试结束时自动回滚)中的对象。通常,在此事务中所做的更改不会对您的应用程序可见,除非它们被提交(这不会发生)。

此问题的解决方案是对 JavaScript 测试使用不同的数据库清理策略。 database_cleaner gem 是一种流行的方式来做到这一点。

另见 https://github.com/jnicklas/capybara#transactions-and-database-setup

关于ruby-on-rails - ActiveRecord::RecordNotFound 用于在 'js: true' 功能规范中刚创建的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18260482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com