Rspec can';t重复类-轨道
当我运行RSpec时,我得到错误Rspec can';t重复类-轨道,rspec,model,Rspec,Model,当我运行RSpec时,我得到错误不能复制NilClass 我尝试添加了不可加载的,但没有解决它 我认为这是导致错误的函数: class User < ActiveRecord::Base before_save :create_permalink validates :username, presence: true, length: { maximum: 50, minimum: 3 }, uniqueness: { cas
不能复制NilClass
我尝试添加了不可加载的,但没有解决它
我认为这是导致错误的函数:
class User < ActiveRecord::Base
before_save :create_permalink
validates :username, presence: true, length: { maximum: 50, minimum: 3 },
uniqueness: { case_sensitive: false }
validates :permalink, presence: true, length: { maximum: 50, minimum: 3 },
uniqueness: { case_sensitive: false }
private
def create_permalink
self.permalink = username.dup.parameterize
end
end
不合格测试包括:
it { should validate_presence_of(:username) }
it { should validate_uniqueness_of(:permalink) }
我还尝试添加:
config.reload_plugins = true if RAILS_ENV == ‘development’
到我的environment.rb文件,但这同样不起作用
我如何阻止这种情况发生,因为它会使我的测试失败?您有一个测试,它正在创建一个用户
对象,其用户名为nil用户名
。有几种可能的修复方法,如果不查看测试代码本身,很难选择一种。它可以简单到在设置测试用户时指定用户名,例如
user = User.create username: 'Test User'
如果问题更复杂,请在问题中包含您的RSpec测试代码
目前,用户名是用户模型中的必填字段,因此可能值得为其添加验证:
class User < ActiveRecord::Base
validates :username, presence: true
...
end
class用户
验证会在保存前的过滤器之前运行,这样您将在测试中得到一个更有意义的错误。那么您的问题是什么?@PeterAlfvin道歉,我认为这是显而易见的。问题现在位于底部。我已使用运行测试和正在运行的RSpec时已经存在的用户验证更新了问题。您是否还可以包括失败的代码示例(it
block)?您在之前的块中设置的@user
很好(它设置了username
字段),因此可能有不同的user
对象在失败的测试中发挥作用。我相信我已经发现了问题,我正在使用shoulda gem进行测试,似乎存在兼容性问题。
class User < ActiveRecord::Base
validates :username, presence: true
...
end