试图理解为什么 validates_presence_of 测试失败

Trying to understand why validates_presence_of test fails

我刚开始玩 Rails(使用 Rspec 和 Shoulda Matchers)来构建演示博客。

我刚刚开始,我的第一个测试失败了,但我不明白为什么。

我认为我已经正确设置了所有内容,但是当我尝试验证文章模型中是否存在标题时,returns 失败了

Shoulda::Matchers::ActiveModel::AllowValueMatcher::AttributeDoesNotExistError:
   The matcher attempted to set :title on the Article to nil, but that
   attribute does not exist.

我的模型是这样的...

class Article < ApplicationRecord
  # attr_accessor :title
  validates_presence_of :title
end

还有我的测试...

require 'rails_helper'

RSpec.describe Article do
  it { should validate_presence_of :title }
end

如果我取消对 attr_accessor 的注释,则测试会通过,但我知道 Rails 不需要它。

我做错了什么?

不需要 attr_accessor,只要您的 articles 数据库 table 有一个 title 列。

您可以在 db/schema.rb.

中查看