Dav*_*ave 5 unit-testing rspec ruby-on-rails associations ruby-on-rails-6
I\xe2\x80\x99m 从 Rails 4.2 升级到 6。我也在使用 FactoryBot 6.2.0。我有这个型号
\nclass Book < ActiveRecord::Base\n belongs_to :author, inverse_of: :book\n \xe2\x80\xa6\n validates :model, presence: true, unless: -> { author.check_vwf? }\nRun Code Online (Sandbox Code Playgroud)\n我有一个 RSpec (rspec-rails 4.1.2 ) 测试,我想在其中测试关联 \xe2\x80\xa6
\ndescribe Book do\n\n \xe2\x80\xa6\n it { should belong_to :author }\nRun Code Online (Sandbox Code Playgroud)\n但运行此测试失败并出现以下错误。看来 \xe2\x80\x9cvalidates\xe2\x80\x9d 方法正在运行,并且正在构造的实例没有 \xe2\x80\x9cbelongs_to\xe2\x80\x9d 关联,但这正是我\xe2\ x80\x99m 尝试测试 \xe2\x80\xa6
\n Failure/Error: validates :model, presence: true, unless: -> { author.check_vwf? }\n \n NoMethodError:\n undefined method `check_vwf?' for nil:NilClass\nRun Code Online (Sandbox Code Playgroud)\n升级 Rails 的一些问题导致该测试突然失败。使用给定版本的 Rails 和 RSpec 测试关联的正确方法是什么\xe2\x80\x99?
\n应该匹配器默认定义一个主题,但是这个主题给您的案例带来了问题。您可以尝试在测试文件的开头添加以下内容以覆盖默认文件。
let!(:author) { create(:author) }
subject { create(:book, author: author) }
Run Code Online (Sandbox Code Playgroud)
假设您已经定义了作者和书籍工厂。
| 归档时间: |
|
| 查看次数: |
971 次 |
| 最近记录: |