0
我有以下的Rails型号:为模型Rspec的隔离测试是建立另一个
class Factory < ApplicationRecord
has_many :widget
def build_widget!
widget = widgets.build
widget.verify! # does stuff, could raise exception depending outcome of third party api calls, etc.
widget.save!
end
end
我有以下Rspec的测试设置:
RSpec.describe Factory, type: :model do
describe '#build_widget!' do
let(:factory) { create(:factory) }
it 'creates a new widget' do
expect(factory.widgets.count).to eq 0
factory.build_new_widget!
expect(factory.widgets.count).to eq 1
end
end
与这一点,我的几个问题努力:
1)我如何隔离工厂测试,所以我不依赖于widget.verify的结果! (我已经在Widget模型的单独规范中介绍过)。因为这个方法在方法内部是硬编码的,所以我在如何设置合适的模拟或双精度上挣扎。
2)测试factory.widgets.count是否是最好的方法?这看起来有点骇人听闻,但我不确定如何正确设定期望值。
好,谢谢!这非常合理。 – richleenyc