RSpec夹具调用before_create和after_create挂钩

时间:2019-02-22 09:46:04

标签: ruby-on-rails ruby unit-testing rspec

我为某些实体定义了一些固定装置,假设一个基本实体定义为:

作者具有字段( id,名称,电子邮件,random_integer

和author.rb如下:

class Author << ApplicationRecord

 after_create :randomize_variable

 private

 def randomize_variable
   self.random_integer = Random.rand(10000)
   self.save
 end

end

如果我要创建一些authors.yml rspec固定装置,例如:

author1:
  id: 1
  name: Jack Smith
  email: jack@smith.com

,然后使用以下命令从RSpec测试中调用此灯具:

...

RSpec.describe Author, type: :model do

   fixtures :authors

   describe 'some test' do
    # Test for anything here
   end

end
...

当调用 fixtures 时,测试数据库显然填充有authors.yml中定义的条目-但是,在此示例中, random_integer 属性将不设置(因为它是使用 Author#after_create 方法设置的)

这是因为RSpec固定装置只是将定义的值插入数据库中吗?实例化夹具实体时,有什么方法可以强制调用这些方法?

0 个答案:

没有答案