【发布时间】:2021-12-17 12:48:01
【问题描述】:
所以我有一个设计模型用户,我添加了一些字段,如用户名、地址等。模型如下所示:
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
attr_accessor :username, :first_name, :last_name, :address
def profile(username)
User.find_by(:username => username)
end
end
然后我正在为这个模型编写 RSpec 测试。但是,当我将新用户记录添加到数据库中时,它会失败。这段代码如下所示:
require 'rails_helper'
RSpec.describe User, type: :model do
before(:all) do
User.create(email: "test@gmail.com", address: "nyc", first_name: "aa", last_name: "bb", username: "lol")
puts User.count
end
after(:all) do
User.destroy_all
end
it 'should return correct record when we query by username' do
user = User.find_by(username: "lol")
puts user
expect(user.address).eql? "nyc"
end
end
但是当我运行 rails spec 时,表的计数为零,因此 create 方法似乎失败了。此外,它引发了一个错误:“nil:NilClass 的未定义方法‘地址’”。
我怀疑它是由设计引起的原因是当我在用户模型中注释掉由设计开始的行时,rspec正常工作。
那么有人知道原因吗?我搜索了相关的帖子,但没有一个有我的情况。谢谢。
【问题讨论】:
标签: ruby-on-rails rspec devise rspec-rails