小编Wil*_*olt的帖子

FactoryGirl build_stubbed&RSpec - 生成ID但在测试Show动作时无法找到id

这是我的测试.我得到的错误是ActiveRecord :: RecordNotFound:无法找到带有'id'= 1001的MedicalStudentProfile.我正确使用build_stubbed吗?

RSpec测试

RSpec.describe MedicalStudentProfilesController, type: :controller do

 let!(:profile){build_stubbed(:medical_student_profile)}
 let!(:user){build_stubbed(:user)}

 describe 'GET show' do

  it 'should show the requested object' do
   sign_in user
   get :show, id: profile.id
   expect(assigns(:profile)).to eq profile
 end
 end

end
Run Code Online (Sandbox Code Playgroud)

调节器

def show
 @profile = MedicalStudentProfile.find params[:id]
end
Run Code Online (Sandbox Code Playgroud)

ruby rspec ruby-on-rails factory-bot

7
推荐指数
1
解决办法
1822
查看次数

ActiveRecord :: Base的未定义方法#sanitize

我刚刚升级到Rails 5.1.1并收到此错误.

NoMethodError (undefined method `sanitize' for ActiveRecord::Base:Class):
Run Code Online (Sandbox Code Playgroud)

堆栈追溯到此代码

like_search_term = ActiveRecord::Base::sanitize("%#{escaped_search_term}%")
Run Code Online (Sandbox Code Playgroud)

是否已在新的Rails升级中删除或更改此方法?

ruby activerecord ruby-on-rails

7
推荐指数
1
解决办法
3169
查看次数

Database_Cleaner with AR-Octopus 不清理记录

我们有一个使用分片数据库的 AR-Octopus gem 的项目。我们遇到的问题是 gem 'database_cleaner' 在使用这个设置时没有清理记录,因为我们一直在我们的测试数据库中有剩余的记录,这会导致我们的测试套件出现问题。

我找到了这个 GitHub 要点 - https://gist.github.com/nowlinuxing/22ea0ab673a5622eb48d

这是我的 database_cleaner 配置文件

# spec/support/database_cleaner.rb

require 'database_cleaner'

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

  ["master", *Octopus.config[Rails.env].keys].each do |shard|
    DatabaseCleaner[:active_record, model: ActiveRecord::Base.using(shard)]
  end

  config.around(:each) do |example|
   DatabaseCleaner.cleaning do
    example.run
   end
  end
 end
Run Code Online (Sandbox Code Playgroud)

有没有人遇到过这个问题?如果是这样,你做了什么来解决这个问题?只是在寻找一些有用的见解。

ruby-on-rails octopus database-cleaner

5
推荐指数
0
解决办法
240
查看次数