Sea*_*yar 0 ruby rspec ruby-on-rails
我无法想象如何在类体内测试类方法调用.
我该怎么测试呢?
class User
act_as_paranoid
end
it 'is called from class body' do
expect(User).to receive(:acts_as_paranoid)
User.new
end
Run Code Online (Sandbox Code Playgroud)
通常建议测试行为,而不是实现.在这种情况下,无论在行为方面为此类acts_as_paranoid 提供什么,都是您要测试的内容.
但是,如果您确信acts_as_paranoid正确调用提供了所需的所有行为,并且只想测试它是否已添加到类中,则可以使用:
assert User.included_modules.include? ActsAsParanoid::Core
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我在这里简要地查看了acts_as_paranoid的源代码:https://github.com/ActsAsParanoid/acts_as_paranoid/blob/master/lib/acts_as_paranoid.rb#L8
您可以在第50行看到它将ActsAsParanoid模块扩展为ActiveRecord :: Base,这使模型类可以访问该acts_as_paranoid方法.如果你看一下这个方法的定义,你可以看到它的调用include ActsAsParanoid::Core
| 归档时间: |
|
| 查看次数: |
353 次 |
| 最近记录: |