gpt4 book ai didi

ruby-on-rails - Rspec 测试由于一个奇怪的原因而失败

转载 作者:行者123 更新时间:2023-11-28 20:52:08 25 4
gpt4 key购买 nike

我有以下 RSpec 测试:

describe 'regular user' do
let!(:organization) { FactoryGirl.create(:full_organization) }
let(:user) { create(:user, organization: organization) }

context 'no access' do
before do
sign_in user
binding.pry # debug
get(suggestions_path)
end

it { expect(response).to have_http_status(:redirect) }
end
end

如果我在没有其他测试的情况下运行它,它工作正常,但如果我运行所有测试,它就会失败。我不知道它会受到怎样的影响。我有具有以下设置的 DatabaseCleaner:

  config.before(:all) do
DatabaseCleaner.clean_with :truncation # clean DB of any leftover data
Rails.application.load_seed
end

config.before(:suite) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with(:truncation)
end

config.around(:each) do |example|
DatabaseCleaner.cleaning do
example.run
end
end

好的,所以我们在 binding.pry 行中,我们有一个用户:

$ user.inspect
#<User id: 15, organization_id: 1, (...params...)>

但是,如果我们键入 get(suggestions_path),此测试将失败并出现以下错误:

$ get(suggestions_path)

Module::DelegationError: User#used_trial? delegated to organization.used_trial?, but organization is nil: User id: 38, email: "person482@example.com", organization_id: 16, (...params...) from .../app/models/user.rb:34:in `rescue in used_trial?'

如果我再次运行它,它会正常工作:

get(suggestions_path) => 302

这个 ID=38 的用户不存在,看起来像是被 DatabaseCleaner 删除了。但是我不知道为什么在我收到(建议路径)请求时它仍然存在。

我试过 config.cache_classes = false 但还是失败了:(

最佳答案

好的,我已经解决了这个问题。

我已经删除了所有规范,直到我得到一个带有此错误的最小规范集。

然后我尝试逐行删除,直到找到导致此问题的行:那是 sign_in user 行。

我在 rails_helper.rb 中添加了以下代码:

  config.after :each do
Warden.test_reset!
end

现在一切正常

关于ruby-on-rails - Rspec 测试由于一个奇怪的原因而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42355543/

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